UNPKG

witnet-solidity-bridge

Version:

Witnet Solidity Bridge contracts for EVM-compatible chains

959 lines (958 loc) 426 kB
{ "contractName": "WitnetProxy", "abi": [ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "implementation", "type": "address" } ], "name": "Upgraded", "type": "event" }, { "stateMutability": "payable", "type": "fallback" }, { "stateMutability": "payable", "type": "receive" }, { "inputs": [], "name": "implementation", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_newImplementation", "type": "address" }, { "internalType": "bytes", "name": "_initData", "type": "bytes" } ], "name": "upgradeTo", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" } ], "metadata": "{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_initData\",\"type\":\"bytes\"}],\"name\":\"upgradeTo\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"author\":\"Guillermo D\\u00edaz <guillermo@witnet.io>\",\"kind\":\"dev\",\"methods\":{\"upgradeTo(address,bytes)\":{\"params\":{\"_initData\":\"Raw data with which new implementation will be initialized.\",\"_newImplementation\":\"New implementation address.\"},\"returns\":{\"_0\":\"Returns whether new implementation would be further upgradable, or not.\"}}},\"title\":\"WitnetProxy: upgradable delegate-proxy contract. \",\"version\":1},\"userdoc\":{\"events\":{\"Upgraded(address)\":{\"notice\":\"Event emitted every time the implementation gets updated.\"}},\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"Constructor with no params as to ease eventual support of Singleton pattern (i.e. ERC-2470).\"},\"implementation()\":{\"notice\":\"Returns proxy's current implementation address.\"},\"upgradeTo(address,bytes)\":{\"notice\":\"Upgrades the `implementation` address.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/core/WitnetProxy.sol\":\"WitnetProxy\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x2d9dc2fe26180f74c11c13663647d38e259e45f95eb88f57b61d2160b0109d3e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81233d1f98060113d9922180bb0f14f8335856fe9f339134b09335e9f678c377\",\"dweb:/ipfs/QmWh6R35SarhAn4z2wH8SU456jJSYL2FgucfTFgbHJJN4E\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"project:/contracts/core/WitnetProxy.sol\":{\"keccak256\":\"0x6f0ec2c544192c9439bde88f5ed4efec5bdef506cb0dcb739c29329a798033fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca05338334632aab3aef3c17a4b8686251ec488da49b9fcd3712642e57e0ce2a\",\"dweb:/ipfs/QmZk1uDdytKFii4TXUnJkFBBB3CZVSPKKR85ugFjWUTufS\"]},\"project:/contracts/patterns/Initializable.sol\":{\"keccak256\":\"0xaac470e87f361cf15d68d1618d6eb7d4913885d33ccc39c797841a9591d44296\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef3760b2039feda8715d4bd9f8de8e3885f25573d12ba92f52d626ba880a08bf\",\"dweb:/ipfs/QmP2mfHPBKkjTAKft95sPDb4PBsjfmAwc47Kdcv3xYSf3g\"]},\"project:/contracts/patterns/Proxiable.sol\":{\"keccak256\":\"0x86032205378fed9ed2bf155eed8ce4bdbb13b7f5960850c6d50954a38b61a3d8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f89978eda4244a13f42a6092a94ac829bb3e38c92d77d4978b9f32894b187a63\",\"dweb:/ipfs/Qmbc1XaFCvLm3Sxvh7tP29Ug32jBGy3avsCqBGAptxs765\"]},\"project:/contracts/patterns/Upgradeable.sol\":{\"keccak256\":\"0x49d1a83abc7a9b39d224677dde65ead4b7f1104332a94c9e619854b2a6b3a89e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e6a798a953af921a5b4e24e3f78bebae97819a85c90deb12ec505952faa42814\",\"dweb:/ipfs/QmVJhv4x3MXf4aDbMC5Q259K8kZNvxSXzmy8anoow7nS7k\"]}},\"version\":1}", "bytecode": "0x6080604052348015600e575f5ffd5b506109958061001c5f395ff3fe60806040526004361061002c575f3560e01c80635c60da1b146100605780636fbc15e91461009157610033565b3661003357005b5f61003c6100c0565b9050604051365f82375f5f3683855af43d805f843e81801561005c578184f35b8184fd5b34801561006b575f5ffd5b506100746100c0565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561009c575f5ffd5b506100b06100ab366004610778565b6100ee565b6040519015158152602001610088565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b5f6001600160a01b03831661014a5760405162461bcd60e51b815260206004820181905260248201527f5769746e657450726f78793a206e756c6c20696d706c656d656e746174696f6e60448201526064015b60405180910390fd5b5f6101536100c0565b90506001600160a01b038116156104f757806001600160a01b0316846001600160a01b0316036101c55760405162461bcd60e51b815260206004820152601f60248201527f5769746e657450726f78793a206e6f7468696e6720746f2075706772616465006044820152606401610141565b806001600160a01b0316635479d9406040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561021f575060408051601f3d908101601f1916820190925261021c91810190610810565b60015b61027e5760405162461bcd60e51b815260206004820152602a60248201527f5769746e657450726f78793a20756e61626c6520746f20636865636b207570676044820152697261646162696c69747960b01b6064820152608401610141565b806102cb5760405162461bcd60e51b815260206004820152601b60248201527f5769746e657450726f78793a206e6f742075706772616461626c6500000000006044820152606401610141565b506040513360248201525f9081906001600160a01b0384169060440160408051601f198184030181529181526020820180516001600160e01b03166335ac4b0560e11b1790525161031c9190610836565b5f60405180830381855af49150503d805f8114610354576040519150601f19603f3d011682016040523d82523d5f602084013e610359565b606091505b50915091508161037b5760405162461bcd60e51b81526004016101419061084c565b8080602001905181019061038f9190610810565b6103db5760405162461bcd60e51b815260206004820152601b60248201527f5769746e657450726f78793a206e6f7420617574686f72697a656400000000006044820152606401610141565b856001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610417573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061043b9190610893565b836001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610477573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061049b9190610893565b146104f45760405162461bcd60e51b8152602060048201526024808201527f5769746e657450726f78793a2070726f786961626c655555494473206d69736d6044820152630c2e8c6d60e31b6064820152608401610141565b50505b5f5f856001600160a01b03168560405160240161051491906108d8565b60408051601f198184030181529181526020820180516001600160e01b031663439fab9160e01b179052516105499190610836565b5f60405180830381855af49150503d805f8114610581576040519150601f19603f3d011682016040523d82523d5f602084013e610586565b606091505b509150915081610620576044815110156105ed5760405162461bcd60e51b815260206004820152602260248201527f5769746e657450726f78793a20696e697469616c697a6174696f6e206661696c604482015261195960f21b6064820152608401610141565b6004810190508080602001905181019061060791906108ea565b60405162461bcd60e51b815260040161014191906108d8565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0388169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2856001600160a01b0316635479d9406040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156106df575060408051601f3d908101601f191682019092526106dc91810190610810565b60015b6106fb5760405162461bcd60e51b81526004016101419061084c565b935061070692505050565b92915050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156107495761074961070c565b604052919050565b5f67ffffffffffffffff82111561076a5761076a61070c565b50601f01601f191660200190565b5f5f60408385031215610789575f5ffd5b82356001600160a01b038116811461079f575f5ffd5b9150602083013567ffffffffffffffff8111156107ba575f5ffd5b8301601f810185136107ca575f5ffd5b80356107dd6107d882610751565b610720565b8181528660208385010111156107f1575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60208284031215610820575f5ffd5b8151801515811461082f575f5ffd5b9392505050565b5f82518060208501845e5f920191825250919050565b60208082526027908201527f5769746e657450726f78793a20756e636f6d706c69616e7420696d706c656d65604082015266373a30ba34b7b760c91b606082015260800190565b5f602082840312156108a3575f5ffd5b5051919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61082f60208301846108aa565b5f602082840312156108fa575f5ffd5b815167ffffffffffffffff811115610910575f5ffd5b8201601f81018413610920575f5ffd5b805161092e6107d882610751565b818152856020838501011115610942575f5ffd5b8160208401602083015e5f9181016020019190915294935050505056fea2646970667358221220a8415d02311c8820d22429929d1fce9f26d5e64d00552717dedf051fcf03fde664736f6c634300081e0033", "deployedBytecode": "0x60806040526004361061002c575f3560e01c80635c60da1b146100605780636fbc15e91461009157610033565b3661003357005b5f61003c6100c0565b9050604051365f82375f5f3683855af43d805f843e81801561005c578184f35b8184fd5b34801561006b575f5ffd5b506100746100c0565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561009c575f5ffd5b506100b06100ab366004610778565b6100ee565b6040519015158152602001610088565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b5f6001600160a01b03831661014a5760405162461bcd60e51b815260206004820181905260248201527f5769746e657450726f78793a206e756c6c20696d706c656d656e746174696f6e60448201526064015b60405180910390fd5b5f6101536100c0565b90506001600160a01b038116156104f757806001600160a01b0316846001600160a01b0316036101c55760405162461bcd60e51b815260206004820152601f60248201527f5769746e657450726f78793a206e6f7468696e6720746f2075706772616465006044820152606401610141565b806001600160a01b0316635479d9406040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561021f575060408051601f3d908101601f1916820190925261021c91810190610810565b60015b61027e5760405162461bcd60e51b815260206004820152602a60248201527f5769746e657450726f78793a20756e61626c6520746f20636865636b207570676044820152697261646162696c69747960b01b6064820152608401610141565b806102cb5760405162461bcd60e51b815260206004820152601b60248201527f5769746e657450726f78793a206e6f742075706772616461626c6500000000006044820152606401610141565b506040513360248201525f9081906001600160a01b0384169060440160408051601f198184030181529181526020820180516001600160e01b03166335ac4b0560e11b1790525161031c9190610836565b5f60405180830381855af49150503d805f8114610354576040519150601f19603f3d011682016040523d82523d5f602084013e610359565b606091505b50915091508161037b5760405162461bcd60e51b81526004016101419061084c565b8080602001905181019061038f9190610810565b6103db5760405162461bcd60e51b815260206004820152601b60248201527f5769746e657450726f78793a206e6f7420617574686f72697a656400000000006044820152606401610141565b856001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610417573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061043b9190610893565b836001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610477573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061049b9190610893565b146104f45760405162461bcd60e51b8152602060048201526024808201527f5769746e657450726f78793a2070726f786961626c655555494473206d69736d6044820152630c2e8c6d60e31b6064820152608401610141565b50505b5f5f856001600160a01b03168560405160240161051491906108d8565b60408051601f198184030181529181526020820180516001600160e01b031663439fab9160e01b179052516105499190610836565b5f60405180830381855af49150503d805f8114610581576040519150601f19603f3d011682016040523d82523d5f602084013e610586565b606091505b509150915081610620576044815110156105ed5760405162461bcd60e51b815260206004820152602260248201527f5769746e657450726f78793a20696e697469616c697a6174696f6e206661696c604482015261195960f21b6064820152608401610141565b6004810190508080602001905181019061060791906108ea565b60405162461bcd60e51b815260040161014191906108d8565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0388169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2856001600160a01b0316635479d9406040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156106df575060408051601f3d908101601f191682019092526106dc91810190610810565b60015b6106fb5760405162461bcd60e51b81526004016101419061084c565b935061070692505050565b92915050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156107495761074961070c565b604052919050565b5f67ffffffffffffffff82111561076a5761076a61070c565b50601f01601f191660200190565b5f5f60408385031215610789575f5ffd5b82356001600160a01b038116811461079f575f5ffd5b9150602083013567ffffffffffffffff8111156107ba575f5ffd5b8301601f810185136107ca575f5ffd5b80356107dd6107d882610751565b610720565b8181528660208385010111156107f1575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60208284031215610820575f5ffd5b8151801515811461082f575f5ffd5b9392505050565b5f82518060208501845e5f920191825250919050565b60208082526027908201527f5769746e657450726f78793a20756e636f6d706c69616e7420696d706c656d65604082015266373a30ba34b7b760c91b606082015260800190565b5f602082840312156108a3575f5ffd5b5051919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61082f60208301846108aa565b5f602082840312156108fa575f5ffd5b815167ffffffffffffffff811115610910575f5ffd5b8201601f81018413610920575f5ffd5b805161092e6107d882610751565b818152856020838501011115610942575f5ffd5b8160208401602083015e5f9181016020019190915294935050505056fea2646970667358221220a8415d02311c8820d22429929d1fce9f26d5e64d00552717dedf051fcf03fde664736f6c634300081e0033", "immutableReferences": {}, "generatedSources": [], "deployedGeneratedSources": [ { "ast": { "nativeSrc": "0:7155:136", "nodeType": "YulBlock", "src": "0:7155:136", "statements": [ { "nativeSrc": "6:3:136", "nodeType": "YulBlock", "src": "6:3:136", "statements": [] }, { "body": { "nativeSrc": "115:102:136", "nodeType": "YulBlock", "src": "115:102:136", "statements": [ { "nativeSrc": "125:26:136", "nodeType": "YulAssignment", "src": "125:26:136", "value": { "arguments": [ { "name": "headStart", "nativeSrc": "137:9:136", "nodeType": "YulIdentifier", "src": "137:9:136" }, { "kind": "number", "nativeSrc": "148:2:136", "nodeType": "YulLiteral", "src": "148:2:136", "type": "", "value": "32" } ], "functionName": { "name": "add", "nativeSrc": "133:3:136", "nodeType": "YulIdentifier", "src": "133:3:136" }, "nativeSrc": "133:18:136", "nodeType": "YulFunctionCall", "src": "133:18:136" }, "variableNames": [ { "name": "tail", "nativeSrc": "125:4:136", "nodeType": "YulIdentifier", "src": "125:4:136" } ] }, { "expression": { "arguments": [ { "name": "headStart", "nativeSrc": "167:9:136", "nodeType": "YulIdentifier", "src": "167:9:136" }, { "arguments": [ { "name": "value0", "nativeSrc": "182:6:136", "nodeType": "YulIdentifier", "src": "182:6:136" }, { "arguments": [ { "arguments": [ { "kind": "number", "nativeSrc": "198:3:136", "nodeType": "YulLiteral", "src": "198:3:136", "type": "", "value": "160" }, { "kind": "number", "nativeSrc": "203:1:136", "nodeType": "YulLiteral", "src": "203:1:136", "type": "", "value": "1" } ], "functionName": { "name": "shl", "nativeSrc": "194:3:136", "nodeType": "YulIdentifier", "src": "194:3:136" }, "nativeSrc": "194:11:136", "nodeType": "YulFunctionCall", "src": "194:11:136" }, { "kind": "number", "nativeSrc": "207:1:136", "nodeType": "YulLiteral", "src": "207:1:136", "type": "", "value": "1" } ], "functionName": { "name": "sub", "nativeSrc": "190:3:136", "nodeType": "YulIdentifier", "src": "190:3:136" }, "nativeSrc": "190:19:136", "nodeType": "YulFunctionCall", "src": "190:19:136" } ], "functionName": { "name": "and", "nativeSrc": "178:3:136", "nodeType": "YulIdentifier", "src": "178:3:136" }, "nativeSrc": "178:32:136", "nodeType": "YulFunctionCall", "src": "178:32:136" } ], "functionName": { "name": "mstore", "nativeSrc": "160:6:136", "nodeType": "YulIdentifier", "src": "160:6:136" }, "nativeSrc": "160:51:136", "nodeType": "YulFunctionCall", "src": "160:51:136" }, "nativeSrc": "160:51:136", "nodeType": "YulExpressionStatement", "src": "160:51:136" } ] }, "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", "nativeSrc": "14:203:136", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nativeSrc": "84:9:136", "nodeType": "YulTypedName", "src": "84:9:136", "type": "" }, { "name": "value0", "nativeSrc": "95:6:136", "nodeType": "YulTypedName", "src": "95:6:136", "type": "" } ], "returnVariables": [ { "name": "tail", "nativeSrc": "106:4:136", "nodeType": "YulTypedName", "src": "106:4:136", "type": "" } ], "src": "14:203:136" }, { "body": { "nativeSrc": "254:95:136", "nodeType": "YulBlock", "src": "254:95:136", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nativeSrc": "271:1:136", "nodeType": "YulLiteral", "src": "271:1:136", "type": "", "value": "0" }, { "arguments": [ { "kind": "number", "nativeSrc": "278:3:136", "nodeType": "YulLiteral", "src": "278:3:136", "type": "", "value": "224" }, { "kind": "number", "nativeSrc": "283:10:136", "nodeType": "YulLiteral", "src": "283:10:136", "type": "", "value": "0x4e487b71" } ], "functionName": { "name": "shl", "nativeSrc": "274:3:136", "nodeType": "YulIdentifier", "src": "274:3:136" }, "nativeSrc": "274:20:136", "nodeType": "YulFunctionCall", "src": "274:20:136" } ], "functionName": { "name": "mstore", "nativeSrc": "264:6:136", "nodeType": "YulIdentifier", "src": "264:6:136" }, "nativeSrc": "264:31:136", "nodeType": "YulFunctionCall", "src": "264:31:136" }, "nativeSrc": "264:31:136", "nodeType": "YulExpressionStatement", "src": "264:31:136" }, { "expression": { "arguments": [ { "kind": "number", "nativeSrc": "311:1:136", "nodeType": "YulLiteral", "src": "311:1:136", "type": "", "value": "4" }, { "kind": "number", "nativeSrc": "314:4:136", "nodeType": "YulLiteral", "src": "314:4:136", "type": "", "value": "0x41" } ], "functionName": { "name": "mstore", "nativeSrc": "304:6:136", "nodeType": "YulIdentifier", "src": "304:6:136" }, "nativeSrc": "304:15:136", "nodeType": "YulFunctionCall", "src": "304:15:136" }, "nativeSrc": "304:15:136", "nodeType": "YulExpressionStatement", "src": "304:15:136" }, { "expression": { "arguments": [ { "kind": "number", "nativeSrc": "335:1:136", "nodeType": "YulLiteral", "src": "335:1:136", "type": "", "value": "0" }, { "kind": "number", "nativeSrc": "338:4:136", "nodeType": "YulLiteral", "src": "338:4:136", "type": "", "value": "0x24" } ], "functionName": { "name": "revert", "nativeSrc": "328:6:136", "nodeType": "YulIdentifier", "src": "328:6:136" }, "nativeSrc": "328:15:136", "nodeType": "YulFunctionCall", "src": "328:15:136" }, "nativeSrc": "328:15:136", "nodeType": "YulExpressionStatement", "src": "328:15:136" } ] }, "name": "panic_error_0x41", "nativeSrc": "222:127:136", "nodeType": "YulFunctionDefinition", "src": "222:127:136" }, { "body": { "nativeSrc": "399:230:136", "nodeType": "YulBlock", "src": "399:230:136", "statements": [ { "nativeSrc": "409:19:136", "nodeType": "YulAssignment", "src": "409:19:136", "value": { "arguments": [ { "kind": "number", "nativeSrc": "425:2:136", "nodeType": "YulLiteral", "src": "425:2:136", "type": "", "value": "64" } ], "functionName": { "name": "mload", "nativeSrc": "419:5:136", "nodeType": "YulIdentifier", "src": "419:5:136" }, "nativeSrc": "419:9:136", "nodeType": "YulFunctionCall", "src": "419:9:136" }, "variableNames": [ { "name": "memPtr", "nativeSrc": "409:6:136", "nodeType": "YulIdentifier", "src": "409:6:136" } ] }, { "nativeSrc": "437:58:136", "nodeType": "YulVariableDeclaration", "src": "437:58:136", "value": { "arguments": [ { "name": "memPtr", "nativeSrc": "459:6:136", "nodeType": "YulIdentifier", "src": "459:6:136" }, { "arguments": [ { "arguments": [ { "name": "size", "nativeSrc": "475:4:136", "nodeType": "YulIdentifier", "src": "475:4:136" }, { "kind": "number", "nativeSrc": "481:2:136", "nodeType": "YulLiteral", "src": "481:2:136", "type": "", "value": "31" } ], "functionName": { "name": "add", "nativeSrc": "471:3:136", "nodeType": "YulIdentifier", "src": "471:3:136" }, "nativeSrc": "471:13:136", "nodeType": "YulFunctionCall", "src": "471:13:136" }, { "arguments": [ { "kind": "number", "nativeSrc": "490:2:136", "nodeType": "YulLiteral", "src": "490:2:136", "type": "", "value": "31" } ], "functionName": { "name": "not", "nativeSrc": "486:3:136", "nodeType": "YulIdentifier", "src": "486:3:136" }, "nativeSrc": "486:7:136", "nodeType": "YulFunctionCall", "src": "486:7:136" } ], "functionName": { "name": "and", "nativeSrc": "467:3:136", "nodeType": "YulIdentifier", "src": "467:3:136" }, "nativeSrc": "467:27:136", "nodeType": "YulFunctionCall", "src": "467:27:136" } ], "functionName": { "name": "add", "nativeSrc": "455:3:136", "nodeType": "YulIdentifier", "src": "455:3:136" }, "nativeSrc": "455:40:136", "nodeType": "YulFunctionCall", "src": "455:40:136" }, "variables": [ { "name": "newFreePtr", "nativeSrc": "441:10:136", "nodeType": "YulTypedName", "src": "441:10:136", "type": "" } ] }, { "body": { "nativeSrc": "570:22:136", "nodeType": "YulBlock", "src": "570:22:136", "statements": [ { "expression": { "arguments": [], "functionName": { "name": "panic_error_0x41", "nativeSrc": "572:16:136", "nodeType": "YulIdentifier", "src": "572:16:136" }, "nativeSrc": "572:18:136", "nodeType": "YulFunctionCall", "src": "572:18:136" }, "nativeSrc": "572:18:136", "nodeType": "YulExpressionStatement", "src": "572:18:136" } ] }, "condition": { "arguments": [ { "arguments": [ { "name": "newFreePtr", "nativeSrc": "513:10:136", "nodeType": "YulIdentifier", "src": "513:10:136" }, { "kind": "number", "nativeSrc": "525:18:136", "nodeType": "YulLiteral", "src": "525:18:136", "type": "", "value": "0xffffffffffffffff" } ], "functionName": { "name": "gt", "nativeSrc": "510:2:136", "nodeType": "YulIdentifier", "src": "510:2:136" }, "nativeSrc": "510:34:136", "nodeType": "YulFunctionCall", "src": "510:34:136" }, { "arguments": [ { "name": "newFreePtr", "nativeSrc": "549:10:136", "nodeType": "YulIdentifier", "src": "549:10:136" }, { "name": "memPtr", "nativeSrc": "561:6:136", "nodeType": "YulIdentifier", "src": "561:6:136" } ], "functionName": { "name": "lt", "nativeSrc": "546:2:136", "nodeType": "YulIdentifier", "src": "546:2:136" }, "nativeSrc": "546:22:136", "nodeType": "YulFunctionCall", "src": "546:22:136" } ], "functionName": { "name": "or", "nativeSrc": "507:2:136", "nodeType": "YulIdentifier", "src": "507:2:136" }, "nativeSrc": "507:62:136", "nodeType": "YulFunctionCall", "src": "507:62:136" }, "nativeSrc": "504:88:136", "nodeType": "YulIf", "src": "504:88:136" }, { "expression": { "arguments": [ { "kind": "number", "nativeSrc": "608:2:136", "nodeType": "YulLiteral", "src": "608:2:136", "type": "", "value": "64" }, { "name": "newFreePtr", "nativeSrc": "612:10:136", "nodeType": "YulIdentifier", "src": "612:10:136" } ], "functionName": { "name": "mstore", "nativeSrc": "601:6:136", "nodeType": "YulIdentifier", "src": "601:6:136" }, "nativeSrc": "601:22:136", "nodeType": "YulFunctionCall", "src": "601:22:136" }, "nativeSrc": "601:22:136", "nodeType": "YulExpressionStatement", "src": "601:22:136" } ] }, "name": "allocate_memory", "nativeSrc": "354:275:136", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "size", "nativeSrc": "379:4:136", "nodeType": "YulTypedName", "src": "379:4:136", "type": "" } ], "returnVariables": [ { "name": "memPtr", "nativeSrc": "388:6:136", "nodeType": "YulTypedName", "src": "388:6:136", "type": "" } ], "src": "354:275:136" }, { "body": { "nativeSrc": "691:129:136", "nodeType": "YulBlock", "src": "691:129:136", "statements": [ { "body": { "nativeSrc": "735:22:136", "nodeType": "YulBlock", "src": "735:22:136", "statements": [ { "expression": { "arguments": [], "functionName": { "name": "panic_error_0x41", "nativeSrc": "737:16:136", "nodeType": "YulIdentifier", "src": "737:16:136" }, "nativeSrc": "737:18:136", "nodeType": "YulFunctionCall", "src": "737:18:136" }, "nativeSrc": "737:18:136", "nodeType": "YulExpressionStatement", "src": "737:18:136" } ] }, "condition": { "arguments": [ { "name": "length", "nativeSrc": "707:6:136", "nodeType": "YulIdentifier", "src": "707:6:136" }, { "kind": "number", "nativeSrc": "715:18:136", "nodeType": "YulLiteral", "src": "715:18:136", "type": "", "value": "0xffffffffffffffff" } ], "functionName": { "name": "gt", "nativeSrc": "704:2:136", "nodeType": "YulIdentifier", "src": "704:2:136" }, "nativeSrc": "704:30:136", "nodeType": "YulFunctionCall", "src": "704:30:136" }, "nativeSrc": "701:56:136", "nodeType": "YulIf", "src": "701:56:136" }, { "nativeSrc": "766:48:136", "nodeType": "YulAssignment", "src": "766:48:136", "value": { "arguments": [ { "arguments": [ { "arguments": [ { "name": "length", "nativeSrc": "786:6:136", "nodeType": "YulIdentifier", "src": "786:6:136" }, { "kind": "number", "nativeSrc": "794:2:136", "nodeType": "YulLiteral", "src": "794:2:136", "type": "", "value": "31" } ], "functionName": { "name": "add", "nativeSrc": "782:3:136", "nodeType": "YulIdentifier", "src": "782:3:136" }, "nativeSrc": "782:15:136", "nodeType": "YulFunctionCall", "src": "782:15:136" }, { "arguments": [ { "kind": "number", "nativeSrc": "803:2:136", "nodeType": "YulLiteral", "src": "803:2:136", "type": "", "value": "31" } ], "functionName": { "name": "not", "nativeSrc": "799:3:136", "nodeType": "YulIdentifier", "src": "799:3:136" }, "nativeSrc": "799:7:136", "nodeType": "YulFunctionCall", "src": "799:7:136" } ], "functionName": { "name": "and", "nativeSrc": "778:3:136", "nodeType": "YulIdentifier", "src": "778:3:136" }, "nativeSrc": "778:29:136", "nodeType": "YulFunctionCall", "src": "778:29:136" }, { "kind": "number", "nativeSrc": "809:4:136", "nodeType": "YulLiteral", "src": "809:4:136", "type": "", "value": "0x20" } ], "functionName": { "name": "add", "nativeSrc": "774:3:136", "nodeType": "YulIdentifier", "src": "774:3:136" }, "nativeSrc": "774:40:136", "nodeType": "YulFunctionCall", "src": "774:40:136" }, "variableNames": [ { "name": "size", "nativeSrc": "766:4:136", "nodeType": "YulIdentifier", "src": "766:4:136" } ] } ] }, "name": "array_allocation_size_bytes", "nativeSrc": "634:186:136", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "length", "nativeSrc": "671:6:136", "nodeType": "YulTypedName", "src": "671:6:136", "type": "" } ], "returnVariables": [ { "name": "size", "nativeSrc": "682:4:136", "nodeType": "YulTypedName", "src": "682:4:136", "type": "" } ], "src": "634:186:136" }, { "body": { "nativeSrc": "921:773:136", "nodeType": "YulBlock", "src": "921:773:136", "statements": [ { "body": { "nativeSrc": "967:16:136", "nodeType": "YulBlock", "src": "967:16:136", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nativeSrc": "976:1:136", "nodeType": "YulLiteral", "src": "976:1:136", "type": "", "value": "0" }, { "kind": "number", "nativeSrc": "979:1:136", "nodeType": "YulLiteral", "src": "979:1:136", "type": "", "value": "0" } ], "functionName": { "name": "revert", "nativeSrc": "969:6:136", "nodeType": "YulIdentifier", "src": "969:6:136" }, "nativeSrc": "969:12:136", "nodeType": "YulFunctionCall", "src": "969:12:136" }, "nativeSrc": "969:12:136", "nodeType": "YulExpressionStatement", "src": "969:12:136" } ] }, "condition": { "arguments": [ { "arguments": [ { "name": "dataEnd", "nativeSrc": "942:7:136", "nodeType": "YulIdentifier", "src": "942:7:136" }, { "name": "headStart", "nativeSrc": "951:9:136", "nodeType": "YulIdentifier", "src": "951:9:136" } ], "functionName": { "name": "sub", "nativeSrc": "938:3:136", "nodeType": "YulIdentifier", "src": "938:3:136" }, "nativeSrc": "938:23:136", "nodeType": "YulFunctionCall", "src": "938:23:136" }, { "kind": "number", "nativeSrc": "963:2:136", "nodeType": "YulLiteral", "src": "963:2:136", "type": "", "value": "64" } ], "functionName": { "name": "slt", "nativeSrc": "934:3:136", "nodeType": "YulIdentifier", "src": "934:3:136" }, "nativeSrc": "934:32:136", "nodeType": "YulFunctionCall", "src": "934:32:136" }, "nativeSrc": "931:52:136", "nodeType": "YulIf", "src": "931:52:136" }, {