UNPKG

hardhat-deploy

Version:

Hardhat Plugin For Replicable Deployments And Tests

1,087 lines (1,086 loc) 308 kB
{ "contractName": "BeaconProxy", "sourceName": "solc_0.8/openzeppelin/proxy/beacon/BeaconProxy.sol", "abi": [ { "inputs": [ { "internalType": "address", "name": "beacon", "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" }, { "stateMutability": "payable", "type": "receive" } ], "bytecode": "0x608060405260405162000a9338038062000a938339810160408190526200002691620004c6565b6200005360017fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5162000594565b60008051602062000a4c83398151915214620000735762000073620005ba565b620000818282600062000089565b505062000641565b62000094836200015e565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a2600082511180620000d65750805b15620001595762000157836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200011f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001459190620005d0565b83620002ff60201b620000291760201c565b505b505050565b62000174816200032e60201b620000551760201c565b620001d45760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6200024e816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000217573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200023d9190620005d0565b6200032e60201b620000551760201c565b620002b55760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401620001cb565b80620002de60008051602062000a4c83398151915260001b6200033d60201b620000711760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b606062000327838360405180606001604052806027815260200162000a6c6027913962000340565b9392505050565b6001600160a01b03163b151590565b90565b60606001600160a01b0384163b620003aa5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620001cb565b600080856001600160a01b031685604051620003c79190620005ee565b600060405180830381855af49150503d806000811462000404576040519150601f19603f3d011682016040523d82523d6000602084013e62000409565b606091505b5090925090506200041c82828662000426565b9695505050505050565b606083156200043757508162000327565b825115620004485782518084602001fd5b8160405162461bcd60e51b8152600401620001cb91906200060c565b80516001600160a01b03811681146200047c57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620004b45781810151838201526020016200049a565b83811115620001575750506000910152565b60008060408385031215620004da57600080fd5b620004e58362000464565b60208401519092506001600160401b03808211156200050357600080fd5b818501915085601f8301126200051857600080fd5b8151818111156200052d576200052d62000481565b604051601f8201601f19908116603f0116810190838211818310171562000558576200055862000481565b816040528281528860208487010111156200057257600080fd5b6200058583602083016020880162000497565b80955050505050509250929050565b600082821015620005b557634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052600160045260246000fd5b600060208284031215620005e357600080fd5b620003278262000464565b600082516200060281846020870162000497565b9190910192915050565b60208152600082518060208401526200062d81604085016020870162000497565b601f01601f19169190910160400192915050565b6103fb80620006516000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610074565b610127565b565b606061004e838360405180606001604052806027815260200161039f6027913961014b565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b90565b60006100b47fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d505473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061012291906102cb565b905090565b3660008037600080366000845af43d6000803e808015610146573d6000f35b3d6000fd5b606073ffffffffffffffffffffffffffffffffffffffff84163b6101f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e7472616374000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6000808573ffffffffffffffffffffffffffffffffffffffff168560405161021e9190610331565b600060405180830381855af49150503d8060008114610259576040519150601f19603f3d011682016040523d82523d6000602084013e61025e565b606091505b509150915061026e828286610278565b9695505050505050565b6060831561028757508161004e565b8251156102975782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ed919061034d565b6000602082840312156102dd57600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461004e57600080fd5b60005b8381101561031c578181015183820152602001610304565b8381111561032b576000848401525b50505050565b60008251610343818460208701610301565b9190910192915050565b602081526000825180602084015261036c816040850160208701610301565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220744bcc0768461f75b2be5663808bceb137cf5b1106770132a21a570e5decafc064736f6c634300080a0033a3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564", "deployedBytecode": "0x60806040523661001357610011610017565b005b6100115b610027610022610074565b610127565b565b606061004e838360405180606001604052806027815260200161039f6027913961014b565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b90565b60006100b47fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d505473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061012291906102cb565b905090565b3660008037600080366000845af43d6000803e808015610146573d6000f35b3d6000fd5b606073ffffffffffffffffffffffffffffffffffffffff84163b6101f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e7472616374000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6000808573ffffffffffffffffffffffffffffffffffffffff168560405161021e9190610331565b600060405180830381855af49150503d8060008114610259576040519150601f19603f3d011682016040523d82523d6000602084013e61025e565b606091505b509150915061026e828286610278565b9695505050505050565b6060831561028757508161004e565b8251156102975782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ed919061034d565b6000602082840312156102dd57600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461004e57600080fd5b60005b8381101561031c578181015183820152602001610304565b8381111561032b576000848401525b50505050565b60008251610343818460208701610301565b9190910192915050565b602081526000825180602084015261036c816040850160208701610301565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220744bcc0768461f75b2be5663808bceb137cf5b1106770132a21a570e5decafc064736f6c634300080a0033", "linkReferences": {}, "deployedLinkReferences": {}, "devdoc": { "details": "This contract implements a proxy that gets the implementation address for each call from a {UpgradeableBeacon}. The beacon address is stored in storage slot `uint256(keccak256('eip1967.proxy.beacon')) - 1`, so that it doesn't conflict with the storage layout of the implementation behind the proxy. _Available since v3.4._", "kind": "dev", "methods": { "constructor": { "details": "Initializes the proxy with `beacon`. If `data` is nonempty, it's used as data in a delegate call to the implementation returned by the beacon. This will typically be an encoded function call, and allows initializating the storage of the proxy like a Solidity constructor. Requirements: - `beacon` must be a contract with the interface {IBeacon}." } }, "version": 1 }, "evm": { "bytecode": { "functionDebugData": { "@_579": { "entryPoint": null, "id": 579, "parameterSlots": 2, "returnSlots": 0 }, "@_setBeacon_447": { "entryPoint": 350, "id": 447, "parameterSlots": 1, "returnSlots": 0 }, "@_upgradeBeaconToAndCall_485": { "entryPoint": 137, "id": 485, "parameterSlots": 3, "returnSlots": 0 }, "@functionDelegateCall_1437": { "entryPoint": 767, "id": 1437, "parameterSlots": 2, "returnSlots": 1 }, "@functionDelegateCall_1472": { "entryPoint": 832, "id": 1472, "parameterSlots": 3, "returnSlots": 1 }, "@getAddressSlot_1552": { "entryPoint": 829, "id": 1552, "parameterSlots": 1, "returnSlots": 1 }, "@isContract_1227": { "entryPoint": 814, "id": 1227, "parameterSlots": 1, "returnSlots": 1 }, "@verifyCallResult_1503": { "entryPoint": 1062, "id": 1503, "parameterSlots": 3, "returnSlots": 1 }, "abi_decode_address_fromMemory": { "entryPoint": 1124, "id": null, "parameterSlots": 1, "returnSlots": 1 }, "abi_decode_tuple_t_address_fromMemory": { "entryPoint": 1488, "id": null, "parameterSlots": 2, "returnSlots": 1 }, "abi_decode_tuple_t_addresst_bytes_memory_ptr_fromMemory": { "entryPoint": 1222, "id": null, "parameterSlots": 2, "returnSlots": 2 }, "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": { "entryPoint": 1518, "id": null, "parameterSlots": 2, "returnSlots": 1 }, "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": { "entryPoint": 1548, "id": null, "parameterSlots": 2, "returnSlots": 1 }, "abi_encode_tuple_t_stringliteral_9589b7809634e4928033de18bb696e9af4ef71b703652af5245f2dbebf2f4470__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 }, "abi_encode_tuple_t_stringliteral_f95fd1f5b5578816eb23f6ca0f2439b4b5e4094dc16e99c3b8e91603a83f93c8__to_t_string_memory_ptr__fromStack_reversed": { "entryPoint": null, "id": null, "parameterSlots": 1, "returnSlots": 1 }, "checked_sub_t_uint256": { "entryPoint": 1428, "id": null, "parameterSlots": 2, "returnSlots": 1 }, "copy_memory_to_memory": { "entryPoint": 1175, "id": null, "parameterSlots": 3, "returnSlots": 0 }, "panic_error_0x01": { "entryPoint": 1466, "id": null, "parameterSlots": 0, "returnSlots": 0 }, "panic_error_0x41": { "entryPoint": 1153, "id": null, "parameterSlots": 0, "returnSlots": 0 } }, "generatedSources": [ { "ast": { "nodeType": "YulBlock", "src": "0:4030: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", "src": "504:3:16" }, { "name": "i", "nodeType": "YulIdentifier", "src": "509:1:16" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "500:3:16" }, "nodeType": "YulFunctionCall", "src": "500:11:16" } ], "functionName": { "name": "mload", "nodeType": "YulIdentifier", "src": "494:5:16" }, "nodeType": "YulFunctionCall", "src": "494:18:16" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "474:6:16" }, "nodeType": "YulFunctionCall", "src": "474:39:16" }, "nodeType": "YulExpressionStatement", "src": "474:39:16" } ] }, "condition": { "arguments": [ { "name": "i", "nodeType": "YulIdentifier", "src": "421:1:16" }, { "name": "length", "nodeType": "YulIdentifier", "src": "424:6:16" } ], "functionName": { "name": "lt", "nodeType": "YulIdentifier", "src": "418:2:16" }, "nodeType": "YulFunctionCall", "src": "418:13:16" }, "nodeType": "YulForLoop", "post": { "nodeType": "YulBlock", "src": "432:19:16", "statements": [ { "nodeType": "YulAssignment", "src": "434:15:16", "value": { "arguments": [ { "name": "i", "nodeType": "YulIdentifier", "src": "443:1:16" }, { "kind": "number", "nodeType": "YulLiteral", "src": "446:2:16", "type": "", "value": "32" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "439:3:16" }, "nodeType": "YulFunctionCall", "src": "439:10:16" }, "variableNames": [ { "name": "i", "nodeType": "YulIdentifier", "src": "434:1:16" } ] } ] }, "pre": { "nodeType": "YulBlock", "src": "414:3:16", "statements": [] }, "src": "410:113:16" }, { "body": { "nodeType": "YulBlock", "src": "549:31:16", "statements": [ { "expression": { "arguments": [ { "arguments": [ { "name": "dst", "nodeType": "YulIdentifier", "src": "562:3:16" }, { "name": "length", "nodeType": "YulIdentifier", "src": "567:6:16" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "558:3:16" }, "nodeType": "YulFunctionCall", "src": "558:16:16" }, { "kind": "number", "nodeType": "YulLiteral", "src": "576:1:16", "type": "", "value": "0" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "551:6:16" }, "nodeType": "YulFunctionCall", "src": "551:27:16" }, "nodeType": "YulExpressionStatement", "src": "551:27:16" } ] }, "condition": { "arguments": [ { "name": "i", "nodeType": "YulIdentifier", "src": "538:1:16" }, { "name": "length", "nodeType": "YulIdentifier", "src": "541:6:16" } ], "functionName": { "name": "gt", "nodeType": "YulIdentifier", "src": "535:2:16" }, "nodeType": "YulFunctionCall", "src": "535:13:16" }, "nodeType": "YulIf", "src": "532:48:16" } ] }, "name": "copy_memory_to_memory", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "src", "nodeType": "YulTypedName", "src": "359:3:16", "type": "" }, { "name": "dst", "nodeType": "YulTypedName", "src": "364:3:16", "type": "" }, { "name": "length", "nodeType": "YulTypedName", "src": "369:6:16", "type": "" } ], "src": "328:258:16" }, { "body": { "nodeType": "YulBlock", "src": "698:861:16", "statements": [ { "body": { "nodeType": "YulBlock", "src": "744:16:16", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "753:1:16", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", "src": "756:1:16", "type": "", "value": "0" } ], "functionName": { "name": "revert", "nodeType": "YulIdentifier", "src": "746:6:16" }, "nodeType": "YulFunctionCall", "src": "746:12:16" }, "nodeType": "YulExpressionStatement", "src": "746:12:16" } ] }, "condition": { "arguments": [ { "arguments": [ { "name": "dataEnd", "nodeType": "YulIdentifier", "src": "719:7:16" }, { "name": "headStart", "nodeType": "YulIdentifier", "src": "728:9:16" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", "src": "715:3:16" }, "nodeType": "YulFunctionCall", "src": "715:23:16" }, { "kind": "number", "nodeType": "YulLiteral", "src": "740:2:16", "type": "", "value": "64" } ], "functionName": { "name": "slt", "nodeType": "YulIdentifier", "src": "711:3:16" }, "nodeType": "YulFunctionCall", "src": "711:32:16" }, "nodeType": "YulIf", "src": "708:52:16" }, { "nodeType": "YulAssignment", "src": "769:50:16", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "809:9:16" } ], "functionName": { "name": "abi_decode_address_fromMemory", "nodeType": "YulIdentifier", "src": "779:29:16" }, "nodeType": "YulFunctionCall", "src": "779:40:16" }, "variableNames": [ { "name": "value0", "nodeType": "YulIdentifier", "src": "769:6:16" } ] }, { "nodeType": "YulVariableDeclaration", "src": "828:39:16", "value": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "852:9:16" }, { "kind": "number", "nodeType": "YulLiteral", "src": "863:2:16", "type": "", "value": "32" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "848:3:16" }, "nodeType": "YulFunctionCall", "src": "848:18:16" } ], "functionName": { "name": "mload", "nodeType": "YulIdentifier", "src": "842:5:16" }, "nodeType": "YulFunctionCall", "src": "842:25:16" }, "variables": [ { "name": "offset", "nodeType": "YulTypedName", "src": "832:6:16", "type": "" } ] }, { "nodeType": "YulVariableDeclaration", "src": "876:28:16", "value": { "arguments": [ { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "894:2:16", "type": "", "value": "64" }, { "kind": "number", "nodeType": "YulLiteral", "src": "898:1:16", "type": "", "value": "1" } ], "functionName": { "name": "shl", "nodeType": "YulIdentifier", "src": "890:3:16" }, "nodeType": "YulFunctionCall", "src": "890:10:16" }, { "kind": "number", "nodeType": "YulLiteral", "src": "902:1:16", "type": "", "value": "1" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", "src": "886:3:16" }, "nodeType": "YulFunctionCall", "src": "886:18:16" }, "variables": [ { "name": "_1", "nodeType": "YulTypedName", "src": "880:2:16", "type": "" } ] }, { "body": { "nodeType": "YulBlock", "src": "931:16:16", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "940:1:16", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", "src": "943:1:16", "type": "", "value": "0" } ], "functionName": { "name": "revert", "nodeType": "YulIdentifier", "src": "933:6:16" }, "nodeType": "YulFunctionCall", "src": "933:12:16" }, "nodeType": "YulExpressionStatement", "src": "933:12:16" } ] }, "condition": { "arguments": [ { "name": "offset", "nodeType": "YulIdentifier", "src": "919:6:16" }, { "name": "_1", "nodeType": "YulIdentifier", "src": "927:2:16" } ], "functionName": { "name": "gt", "nodeType": "YulIdentifier", "src": "916:2:16" }, "nodeType": "YulFunctionCall", "src": "916:14:16" }, "nodeType": "YulIf", "src": "913:34:16" }, { "nodeType": "YulVariableDeclaration", "src": "956:32:16", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "970:9:16" }, { "name": "offset", "nodeType": "YulIdentifier", "src": "981:6:16" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "966:3:16" }, "nodeType": "YulFunctionCall", "src": "966:22:16" }, "variables": [ { "name": "_2", "nodeType": "YulTypedName", "src": "960:2:16",