UNPKG

hardhat-deploy

Version:

Hardhat Plugin For Replicable Deployments And Tests

659 lines (658 loc) 538 kB
{ "contractName": "OptimizedTransparentUpgradeableProxy", "sourceName": "solc_0.8/proxy/OptimizedTransparentUpgradeableProxy.sol", "abi": [ { "inputs": [ { "internalType": "address", "name": "_logic", "type": "address" }, { "internalType": "address", "name": "admin_", "type": "address" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "stateMutability": "payable", "type": "constructor" }, { "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" }, { "stateMutability": "payable", "type": "fallback" }, { "inputs": [], "name": "admin", "outputs": [ { "internalType": "address", "name": "admin_", "type": "address" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "implementation", "outputs": [ { "internalType": "address", "name": "implementation_", "type": "address" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newImplementation", "type": "address" } ], "name": "upgradeTo", "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" }, { "stateMutability": "payable", "type": "receive" } ], "bytecode": "0x60a060405260405162000f5f38038062000f5f83398101604081905262000026916200044a565b82816200005560017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd6200052a565b60008051602062000f188339815191521462000075576200007562000550565b62000083828260006200013c565b50620000b3905060017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61046200052a565b60008051602062000ef883398151915214620000d357620000d362000550565b6001600160a01b038216608081905260008051602062000ef88339815191528381556040805160008152602081019390935290917f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a150505050620005b9565b620001478362000179565b600082511180620001555750805b156200017457620001728383620001bb60201b620002a91760201c565b505b505050565b6200018481620001ea565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060620001e3838360405180606001604052806027815260200162000f3860279139620002b2565b9392505050565b62000200816200039860201b620002d51760201c565b620002685760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806200029160008051602062000f1883398151915260001b620003a760201b620002411760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606001600160a01b0384163b6200031c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016200025f565b600080856001600160a01b03168560405162000339919062000566565b600060405180830381855af49150503d806000811462000376576040519150601f19603f3d011682016040523d82523d6000602084013e6200037b565b606091505b5090925090506200038e828286620003aa565b9695505050505050565b6001600160a01b03163b151590565b90565b60608315620003bb575081620001e3565b825115620003cc5782518084602001fd5b8160405162461bcd60e51b81526004016200025f919062000584565b80516001600160a01b03811681146200040057600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620004385781810151838201526020016200041e565b83811115620001725750506000910152565b6000806000606084860312156200046057600080fd5b6200046b84620003e8565b92506200047b60208501620003e8565b60408501519092506001600160401b03808211156200049957600080fd5b818601915086601f830112620004ae57600080fd5b815181811115620004c357620004c362000405565b604051601f8201601f19908116603f01168101908382118183101715620004ee57620004ee62000405565b816040528281528960208487010111156200050857600080fd5b6200051b8360208301602088016200041b565b80955050505050509250925092565b6000828210156200054b57634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052600160045260246000fd5b600082516200057a8184602087016200041b565b9190910192915050565b6020815260008251806020840152620005a58160408501602087016200041b565b601f01601f19169190910160400192915050565b608051610900620005f86000396000818161011201528181610176015281816102060152818161025e01528181610287015261030901526109006000f3fe6080604052600436106100435760003560e01c80633659cfe61461005a5780634f1ef2861461007a5780635c60da1b1461008d578063f851a440146100cb57610052565b36610052576100506100e0565b005b6100506100e0565b34801561006657600080fd5b5061005061007536600461076c565b6100fa565b610050610088366004610787565b61015e565b34801561009957600080fd5b506100a26101ec565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100d757600080fd5b506100a2610244565b6100e86102f1565b6100f86100f36103e2565b610422565b565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614156101565761015381604051806020016040528060008152506000610446565b50565b6101536100e0565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614156101e4576101df8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610446915050565b505050565b6101df6100e0565b60003373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161415610239576102346103e2565b905090565b6102416100e0565b90565b60003373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016141561023957507f000000000000000000000000000000000000000000000000000000000000000090565b60606102ce83836040518060600160405280602781526020016108a460279139610471565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614156100f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b60006102347f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b3660008037600080366000845af43d6000803e808015610441573d6000f35b3d6000fd5b61044f83610599565b60008251118061045c5750805b156101df5761046b83836102a9565b50505050565b606073ffffffffffffffffffffffffffffffffffffffff84163b610517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e7472616374000000000000000000000000000000000000000000000000000060648201526084016103d9565b6000808573ffffffffffffffffffffffffffffffffffffffff168560405161053f9190610836565b600060405180830381855af49150503d806000811461057a576040519150601f19603f3d011682016040523d82523d6000602084013e61057f565b606091505b509150915061058f8282866105e6565b9695505050505050565b6105a281610639565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606083156105f55750816102ce565b8251156106055782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d99190610852565b73ffffffffffffffffffffffffffffffffffffffff81163b6106dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016103d9565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461076757600080fd5b919050565b60006020828403121561077e57600080fd5b6102ce82610743565b60008060006040848603121561079c57600080fd5b6107a584610743565b9250602084013567ffffffffffffffff808211156107c257600080fd5b818601915086601f8301126107d657600080fd5b8135818111156107e557600080fd5b8760208285010111156107f757600080fd5b6020830194508093505050509250925092565b60005b8381101561082557818101518382015260200161080d565b8381111561046b5750506000910152565b6000825161084881846020870161080a565b9190910192915050565b602081526000825180602084015261087181604085016020870161080a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212206f70214c51cdd41c05ba0ffeb72b309ca3c8be178fd6e73c12162330799984f364736f6c634300080a0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564", "deployedBytecode": "0x6080604052600436106100435760003560e01c80633659cfe61461005a5780634f1ef2861461007a5780635c60da1b1461008d578063f851a440146100cb57610052565b36610052576100506100e0565b005b6100506100e0565b34801561006657600080fd5b5061005061007536600461076c565b6100fa565b610050610088366004610787565b61015e565b34801561009957600080fd5b506100a26101ec565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100d757600080fd5b506100a2610244565b6100e86102f1565b6100f86100f36103e2565b610422565b565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614156101565761015381604051806020016040528060008152506000610446565b50565b6101536100e0565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614156101e4576101df8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610446915050565b505050565b6101df6100e0565b60003373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161415610239576102346103e2565b905090565b6102416100e0565b90565b60003373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016141561023957507f000000000000000000000000000000000000000000000000000000000000000090565b60606102ce83836040518060600160405280602781526020016108a460279139610471565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614156100f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b60006102347f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b3660008037600080366000845af43d6000803e808015610441573d6000f35b3d6000fd5b61044f83610599565b60008251118061045c5750805b156101df5761046b83836102a9565b50505050565b606073ffffffffffffffffffffffffffffffffffffffff84163b610517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e7472616374000000000000000000000000000000000000000000000000000060648201526084016103d9565b6000808573ffffffffffffffffffffffffffffffffffffffff168560405161053f9190610836565b600060405180830381855af49150503d806000811461057a576040519150601f19603f3d011682016040523d82523d6000602084013e61057f565b606091505b509150915061058f8282866105e6565b9695505050505050565b6105a281610639565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606083156105f55750816102ce565b8251156106055782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d99190610852565b73ffffffffffffffffffffffffffffffffffffffff81163b6106dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016103d9565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461076757600080fd5b919050565b60006020828403121561077e57600080fd5b6102ce82610743565b60008060006040848603121561079c57600080fd5b6107a584610743565b9250602084013567ffffffffffffffff808211156107c257600080fd5b818601915086601f8301126107d657600080fd5b8135818111156107e557600080fd5b8760208285010111156107f757600080fd5b6020830194508093505050509250925092565b60005b8381101561082557818101518382015260200161080d565b8381111561046b5750506000910152565b6000825161084881846020870161080a565b9190910192915050565b602081526000825180602084015261087181604085016020870161080a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212206f70214c51cdd41c05ba0ffeb72b309ca3c8be178fd6e73c12162330799984f364736f6c634300080a0033", "linkReferences": {}, "deployedLinkReferences": {}, "devdoc": { "details": "This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \"admin cannot fallback to proxy target\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.", "kind": "dev", "methods": { "admin()": { "details": "Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`" }, "constructor": { "details": "Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}." }, "implementation()": { "details": "Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`" }, "upgradeTo(address)": { "details": "Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}." }, "upgradeToAndCall(address,bytes)": { "details": "Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}." } }, "version": 1 }, "evm": { "bytecode": { "functionDebugData": { "@_155": { "entryPoint": null, "id": 155, "parameterSlots": 2, "returnSlots": 0 }, "@_1642": { "entryPoint": null, "id": 1642, "parameterSlots": 3, "returnSlots": 0 }, "@_setImplementation_224": { "entryPoint": 490, "id": 224, "parameterSlots": 1, "returnSlots": 0 }, "@_upgradeToAndCall_269": { "entryPoint": 316, "id": 269, "parameterSlots": 3, "returnSlots": 0 }, "@_upgradeTo_239": { "entryPoint": 377, "id": 239, "parameterSlots": 1, "returnSlots": 0 }, "@functionDelegateCall_1437": { "entryPoint": 443, "id": 1437, "parameterSlots": 2, "returnSlots": 1 }, "@functionDelegateCall_1472": { "entryPoint": 690, "id": 1472, "parameterSlots": 3, "returnSlots": 1 }, "@getAddressSlot_1552": { "entryPoint": 935, "id": 1552, "parameterSlots": 1, "returnSlots": 1 }, "@isContract_1227": { "entryPoint": 920, "id": 1227, "parameterSlots": 1, "returnSlots": 1 }, "@verifyCallResult_1503": { "entryPoint": 938, "id": 1503, "parameterSlots": 3, "returnSlots": 1 }, "abi_decode_address_fromMemory": { "entryPoint": 1000, "id": null, "parameterSlots": 1, "returnSlots": 1 }, "abi_decode_tuple_t_addresst_addresst_bytes_memory_ptr_fromMemory": { "entryPoint": 1098, "id": null, "parameterSlots": 2, "returnSlots": 3 }, "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": { "entryPoint": 1382, "id": null, "parameterSlots": 2, "returnSlots": 1 }, "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed": { "entryPoint": null, "id": null, "parameterSlots": 3, "returnSlots": 1 }, "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": { "entryPoint": 1412, "id": null, "parameterSlots": 2, "returnSlots": 1 }, "abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed": { "entryPoint": null, "id": null, "parameterSlots": 1, "returnSlots": 1 }, "abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__to_t_string_memory_ptr__fromStack_reversed": { "entryPoint": null, "id": null, "parameterSlots": 1, "returnSlots": 1 }, "checked_sub_t_uint256": { "entryPoint": 1322, "id": null, "parameterSlots": 2, "returnSlots": 1 }, "copy_memory_to_memory": { "entryPoint": 1051, "id": null, "parameterSlots": 3, "returnSlots": 0 }, "panic_error_0x01": { "entryPoint": 1360, "id": null, "parameterSlots": 0, "returnSlots": 0 }, "panic_error_0x41": { "entryPoint": 1029, "id": null, "parameterSlots": 0, "returnSlots": 0 } }, "generatedSources": [ { "ast": { "nodeType": "YulBlock", "src": "0:3802:16", "statements": [ { "nodeType": "YulBlock", "src": "6:3:16", "statements": [] }, { "body": { "nodeType": "YulBlock", "src": "74:117:16", "statements": [ { "nodeType": "YulAssignment", "src": "84:22:16", "value": { "arguments": [ { "name": "offset", "nodeType": "YulIdentifier", "src": "99:6:16" } ], "functionName": { "name": "mload", "nodeType": "YulIdentifier", "src": "93:5:16" }, "nodeType": "YulFunctionCall", "src": "93:13:16" }, "variableNames": [ { "name": "value", "nodeType": "YulIdentifier", "src": "84:5:16" } ] }, { "body": { "nodeType": "YulBlock", "src": "169:16:16", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "178:1:16", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", "src": "181:1:16", "type": "", "value": "0" } ], "functionName": { "name": "revert", "nodeType": "YulIdentifier", "src": "171:6:16" }, "nodeType": "YulFunctionCall", "src": "171:12:16" }, "nodeType": "YulExpressionStatement", "src": "171:12:16" } ] }, "condition": { "arguments": [ { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", "src": "128:5:16" }, { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", "src": "139:5:16" }, { "arguments": [ { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "154:3:16", "type": "", "value": "160" }, { "kind": "number", "nodeType": "YulLiteral", "src": "159:1:16", "type": "", "value": "1" } ], "functionName": { "name": "shl", "nodeType": "YulIdentifier", "src": "150:3:16" }, "nodeType": "YulFunctionCall", "src": "150:11:16" }, { "kind": "number", "nodeType": "YulLiteral", "src": "163:1:16", "type": "", "value": "1" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", "src": "146:3:16" }, "nodeType": "YulFunctionCall", "src": "146:19:16" } ], "functionName": { "name": "and", "nodeType": "YulIdentifier", "src": "135:3:16" }, "nodeType": "YulFunctionCall", "src": "135:31:16" } ], "functionName": { "name": "eq", "nodeType": "YulIdentifier", "src": "125:2:16" }, "nodeType": "YulFunctionCall", "src": "125:42:16" } ], "functionName": { "name": "iszero", "nodeType": "YulIdentifier", "src": "118:6:16" }, "nodeType": "YulFunctionCall", "src": "118:50:16" }, "nodeType": "YulIf", "src": "115:70:16" } ] }, "name": "abi_decode_address_fromMemory", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "offset", "nodeType": "YulTypedName", "src": "53:6:16", "type": "" } ], "returnVariables": [ { "name": "value", "nodeType": "YulTypedName", "src": "64:5:16", "type": "" } ], "src": "14:177:16" }, { "body": { "nodeType": "YulBlock", "src": "228:95:16", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "245:1:16", "type": "", "value": "0" }, { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "252:3:16", "type": "", "value": "224" }, { "kind": "number", "nodeType": "YulLiteral", "src": "257:10:16", "type": "", "value": "0x4e487b71" } ], "functionName": { "name": "shl", "nodeType": "YulIdentifier", "src": "248:3:16" }, "nodeType": "YulFunctionCall", "src": "248:20:16" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "238:6:16" }, "nodeType": "YulFunctionCall", "src": "238:31:16" }, "nodeType": "YulExpressionStatement", "src": "238:31:16" }, { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "285:1:16", "type": "", "value": "4" }, { "kind": "number", "nodeType": "YulLiteral", "src": "288:4:16", "type": "", "value": "0x41" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "278:6:16" }, "nodeType": "YulFunctionCall", "src": "278:15:16" }, "nodeType": "YulExpressionStatement", "src": "278:15:16" }, { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "309:1:16", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", "src": "312:4:16", "type": "", "value": "0x24" } ], "functionName": { "name": "revert", "nodeType": "YulIdentifier", "src": "302:6:16" }, "nodeType": "YulFunctionCall", "src": "302:15:16" }, "nodeType": "YulExpressionStatement", "src": "302:15:16" } ] }, "name": "panic_error_0x41", "nodeType": "YulFunctionDefinition", "src": "196:127:16" }, { "body": { "nodeType": "YulBlock", "src": "381:205:16", "statements": [ { "nodeType": "YulVariableDeclaration", "src": "391:10:16", "value": { "kind": "number", "nodeType": "YulLiteral", "src": "400:1:16", "type": "", "value": "0" }, "variables": [ { "name": "i", "nodeType": "YulTypedName", "src": "395:1:16", "type": "" } ] }, { "body": { "nodeType": "YulBlock", "src": "460:63:16", "statements": [ { "expression": { "arguments": [ { "arguments": [ { "name": "dst", "nodeType": "YulIdentifier", "src": "485:3:16" }, { "name": "i", "nodeType": "YulIdentifier", "src": "490:1:16" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "481:3:16" }, "nodeType": "YulFunctionCall", "src": "481:11:16" }, { "arguments": [ { "arguments": [ { "name": "src", "nodeType": "YulIdentifier",