witnet-solidity-bridge
Version:
Witnet Solidity Bridge contracts for EVM-compatible chains
956 lines (955 loc) • 428 kB
JSON
{
"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.25+commit.b61c2a91\"},\"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@otherplane.com>\",\"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\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xddce8e17e3d3f9ed818b4f4c4478a8262aab8b11ed322f1bf5ed705bb4bd97fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8084aa71a4cc7d2980972412a88fe4f114869faea3fefa5436431644eb5c0287\",\"dweb:/ipfs/Qmbqfs5dRdPvHVKY8kTaeyc65NdqXRQwRK7h9s5UJEhD1p\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"project:/contracts/core/WitnetProxy.sol\":{\"keccak256\":\"0x2b2f56fc69bf0e01f6f1062202d1682cd394fa3b3d9ff2f8f833ab51c9e866cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8017f76a71e4a52a5a5e249081c92510bac5b91f03f727e66ff4406238521337\",\"dweb:/ipfs/QmdWcPAL3MGtxGdpX5CMfgzz4YzxYEeCiFRoGHVCr8rLEL\"]},\"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\":\"0xbeb025c71f037acb1a668174eb6930631bf397129beb825f2660e5d8cf19614f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fe6ce4dcd500093ae069d35b91829ccb471e1ca33ed0851fb053fbfe76c78aba\",\"dweb:/ipfs/QmT7huvCFS6bHDxt7HhEogJmyvYNbeb6dFTJudsVSX6nEs\"]}},\"version\":1}",
"bytecode": "0x6080604052348015600f57600080fd5b506109e58061001f6000396000f3fe60806040526004361061002d5760003560e01c80635c60da1b146100655780636fbc15e91461009757610034565b3661003457005b600061003e6100c7565b905060405136600082376000803683855af43d806000843e818015610061578184f35b8184fd5b34801561007157600080fd5b5061007a6100c7565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156100a357600080fd5b506100b76100b2366004610791565b6100f5565b604051901515815260200161008e565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b60006001600160a01b0383166101525760405162461bcd60e51b815260206004820181905260248201527f5769746e657450726f78793a206e756c6c20696d706c656d656e746174696f6e60448201526064015b60405180910390fd5b600061015c6100c7565b90506001600160a01b0381161561050857806001600160a01b0316846001600160a01b0316036101ce5760405162461bcd60e51b815260206004820152601f60248201527f5769746e657450726f78793a206e6f7468696e6720746f2075706772616465006044820152606401610149565b806001600160a01b0316635479d9406040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610228575060408051601f3d908101601f1916820190925261022591810190610830565b60015b6102875760405162461bcd60e51b815260206004820152602a60248201527f5769746e657450726f78793a20756e61626c6520746f20636865636b207570676044820152697261646162696c69747960b01b6064820152608401610149565b806102d45760405162461bcd60e51b815260206004820152601b60248201527f5769746e657450726f78793a206e6f742075706772616461626c6500000000006044820152606401610149565b5060405133602482015260009081906001600160a01b0384169060440160408051601f198184030181529181526020820180516001600160e01b03166335ac4b0560e11b17905251610326919061087d565b600060405180830381855af49150503d8060008114610361576040519150601f19603f3d011682016040523d82523d6000602084013e610366565b606091505b5091509150816103885760405162461bcd60e51b815260040161014990610899565b8080602001905181019061039c9190610830565b6103e85760405162461bcd60e51b815260206004820152601b60248201527f5769746e657450726f78793a206e6f7420617574686f72697a656400000000006044820152606401610149565b856001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610426573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061044a91906108e0565b836001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610488573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ac91906108e0565b146105055760405162461bcd60e51b8152602060048201526024808201527f5769746e657450726f78793a2070726f786961626c655555494473206d69736d6044820152630c2e8c6d60e31b6064820152608401610149565b50505b600080856001600160a01b0316856040516024016105269190610925565b60408051601f198184030181529181526020820180516001600160e01b031663439fab9160e01b1790525161055b919061087d565b600060405180830381855af49150503d8060008114610596576040519150601f19603f3d011682016040523d82523d6000602084013e61059b565b606091505b509150915081610635576044815110156106025760405162461bcd60e51b815260206004820152602260248201527f5769746e657450726f78793a20696e697469616c697a6174696f6e206661696c604482015261195960f21b6064820152608401610149565b6004810190508080602001905181019061061c9190610938565b60405162461bcd60e51b81526004016101499190610925565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0388169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2856001600160a01b0316635479d9406040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156106f5575060408051601f3d908101601f191682019092526106f291810190610830565b60015b6107115760405162461bcd60e51b815260040161014990610899565b935061071c92505050565b92915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561076157610761610722565b604052919050565b600067ffffffffffffffff82111561078357610783610722565b50601f01601f191660200190565b600080604083850312156107a457600080fd5b82356001600160a01b03811681146107bb57600080fd5b9150602083013567ffffffffffffffff8111156107d757600080fd5b8301601f810185136107e857600080fd5b80356107fb6107f682610769565b610738565b81815286602083850101111561081057600080fd5b816020840160208301376000602083830101528093505050509250929050565b60006020828403121561084257600080fd5b8151801515811461085257600080fd5b9392505050565b60005b8381101561087457818101518382015260200161085c565b50506000910152565b6000825161088f818460208701610859565b9190910192915050565b60208082526027908201527f5769746e657450726f78793a20756e636f6d706c69616e7420696d706c656d65604082015266373a30ba34b7b760c91b606082015260800190565b6000602082840312156108f257600080fd5b5051919050565b60008151808452610911816020860160208601610859565b601f01601f19169290920160200192915050565b60208152600061085260208301846108f9565b60006020828403121561094a57600080fd5b815167ffffffffffffffff81111561096157600080fd5b8201601f8101841361097257600080fd5b80516109806107f682610769565b81815285602083850101111561099557600080fd5b6109a6826020830160208601610859565b9594505050505056fea2646970667358221220ba4d61ba6dc6b10826f1b2f21a7fb1965aee5031bae62952c0d5d7b7c16674ab64736f6c63430008190033",
"deployedBytecode": "0x60806040526004361061002d5760003560e01c80635c60da1b146100655780636fbc15e91461009757610034565b3661003457005b600061003e6100c7565b905060405136600082376000803683855af43d806000843e818015610061578184f35b8184fd5b34801561007157600080fd5b5061007a6100c7565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156100a357600080fd5b506100b76100b2366004610791565b6100f5565b604051901515815260200161008e565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b60006001600160a01b0383166101525760405162461bcd60e51b815260206004820181905260248201527f5769746e657450726f78793a206e756c6c20696d706c656d656e746174696f6e60448201526064015b60405180910390fd5b600061015c6100c7565b90506001600160a01b0381161561050857806001600160a01b0316846001600160a01b0316036101ce5760405162461bcd60e51b815260206004820152601f60248201527f5769746e657450726f78793a206e6f7468696e6720746f2075706772616465006044820152606401610149565b806001600160a01b0316635479d9406040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610228575060408051601f3d908101601f1916820190925261022591810190610830565b60015b6102875760405162461bcd60e51b815260206004820152602a60248201527f5769746e657450726f78793a20756e61626c6520746f20636865636b207570676044820152697261646162696c69747960b01b6064820152608401610149565b806102d45760405162461bcd60e51b815260206004820152601b60248201527f5769746e657450726f78793a206e6f742075706772616461626c6500000000006044820152606401610149565b5060405133602482015260009081906001600160a01b0384169060440160408051601f198184030181529181526020820180516001600160e01b03166335ac4b0560e11b17905251610326919061087d565b600060405180830381855af49150503d8060008114610361576040519150601f19603f3d011682016040523d82523d6000602084013e610366565b606091505b5091509150816103885760405162461bcd60e51b815260040161014990610899565b8080602001905181019061039c9190610830565b6103e85760405162461bcd60e51b815260206004820152601b60248201527f5769746e657450726f78793a206e6f7420617574686f72697a656400000000006044820152606401610149565b856001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610426573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061044a91906108e0565b836001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610488573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ac91906108e0565b146105055760405162461bcd60e51b8152602060048201526024808201527f5769746e657450726f78793a2070726f786961626c655555494473206d69736d6044820152630c2e8c6d60e31b6064820152608401610149565b50505b600080856001600160a01b0316856040516024016105269190610925565b60408051601f198184030181529181526020820180516001600160e01b031663439fab9160e01b1790525161055b919061087d565b600060405180830381855af49150503d8060008114610596576040519150601f19603f3d011682016040523d82523d6000602084013e61059b565b606091505b509150915081610635576044815110156106025760405162461bcd60e51b815260206004820152602260248201527f5769746e657450726f78793a20696e697469616c697a6174696f6e206661696c604482015261195960f21b6064820152608401610149565b6004810190508080602001905181019061061c9190610938565b60405162461bcd60e51b81526004016101499190610925565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0388169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2856001600160a01b0316635479d9406040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156106f5575060408051601f3d908101601f191682019092526106f291810190610830565b60015b6107115760405162461bcd60e51b815260040161014990610899565b935061071c92505050565b92915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561076157610761610722565b604052919050565b600067ffffffffffffffff82111561078357610783610722565b50601f01601f191660200190565b600080604083850312156107a457600080fd5b82356001600160a01b03811681146107bb57600080fd5b9150602083013567ffffffffffffffff8111156107d757600080fd5b8301601f810185136107e857600080fd5b80356107fb6107f682610769565b610738565b81815286602083850101111561081057600080fd5b816020840160208301376000602083830101528093505050509250929050565b60006020828403121561084257600080fd5b8151801515811461085257600080fd5b9392505050565b60005b8381101561087457818101518382015260200161085c565b50506000910152565b6000825161088f818460208701610859565b9190910192915050565b60208082526027908201527f5769746e657450726f78793a20756e636f6d706c69616e7420696d706c656d65604082015266373a30ba34b7b760c91b606082015260800190565b6000602082840312156108f257600080fd5b5051919050565b60008151808452610911816020860160208601610859565b601f01601f19169290920160200192915050565b60208152600061085260208301846108f9565b60006020828403121561094a57600080fd5b815167ffffffffffffffff81111561096157600080fd5b8201601f8101841361097257600080fd5b80516109806107f682610769565b81815285602083850101111561099557600080fd5b6109a6826020830160208601610859565b9594505050505056fea2646970667358221220ba4d61ba6dc6b10826f1b2f21a7fb1965aee5031bae62952c0d5d7b7c16674ab64736f6c63430008190033",
"immutableReferences": {},
"generatedSources": [],
"deployedGeneratedSources": [
{
"ast": {
"nativeSrc": "0:7316:84",
"nodeType": "YulBlock",
"src": "0:7316:84",
"statements": [
{
"nativeSrc": "6:3:84",
"nodeType": "YulBlock",
"src": "6:3:84",
"statements": []
},
{
"body": {
"nativeSrc": "115:102:84",
"nodeType": "YulBlock",
"src": "115:102:84",
"statements": [
{
"nativeSrc": "125:26:84",
"nodeType": "YulAssignment",
"src": "125:26:84",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "137:9:84",
"nodeType": "YulIdentifier",
"src": "137:9:84"
},
{
"kind": "number",
"nativeSrc": "148:2:84",
"nodeType": "YulLiteral",
"src": "148:2:84",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "133:3:84",
"nodeType": "YulIdentifier",
"src": "133:3:84"
},
"nativeSrc": "133:18:84",
"nodeType": "YulFunctionCall",
"src": "133:18:84"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "125:4:84",
"nodeType": "YulIdentifier",
"src": "125:4:84"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "167:9:84",
"nodeType": "YulIdentifier",
"src": "167:9:84"
},
{
"arguments": [
{
"name": "value0",
"nativeSrc": "182:6:84",
"nodeType": "YulIdentifier",
"src": "182:6:84"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nativeSrc": "198:3:84",
"nodeType": "YulLiteral",
"src": "198:3:84",
"type": "",
"value": "160"
},
{
"kind": "number",
"nativeSrc": "203:1:84",
"nodeType": "YulLiteral",
"src": "203:1:84",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nativeSrc": "194:3:84",
"nodeType": "YulIdentifier",
"src": "194:3:84"
},
"nativeSrc": "194:11:84",
"nodeType": "YulFunctionCall",
"src": "194:11:84"
},
{
"kind": "number",
"nativeSrc": "207:1:84",
"nodeType": "YulLiteral",
"src": "207:1:84",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "190:3:84",
"nodeType": "YulIdentifier",
"src": "190:3:84"
},
"nativeSrc": "190:19:84",
"nodeType": "YulFunctionCall",
"src": "190:19:84"
}
],
"functionName": {
"name": "and",
"nativeSrc": "178:3:84",
"nodeType": "YulIdentifier",
"src": "178:3:84"
},
"nativeSrc": "178:32:84",
"nodeType": "YulFunctionCall",
"src": "178:32:84"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "160:6:84",
"nodeType": "YulIdentifier",
"src": "160:6:84"
},
"nativeSrc": "160:51:84",
"nodeType": "YulFunctionCall",
"src": "160:51:84"
},
"nativeSrc": "160:51:84",
"nodeType": "YulExpressionStatement",
"src": "160:51:84"
}
]
},
"name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
"nativeSrc": "14:203:84",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "84:9:84",
"nodeType": "YulTypedName",
"src": "84:9:84",
"type": ""
},
{
"name": "value0",
"nativeSrc": "95:6:84",
"nodeType": "YulTypedName",
"src": "95:6:84",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "106:4:84",
"nodeType": "YulTypedName",
"src": "106:4:84",
"type": ""
}
],
"src": "14:203:84"
},
{
"body": {
"nativeSrc": "254:95:84",
"nodeType": "YulBlock",
"src": "254:95:84",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "271:1:84",
"nodeType": "YulLiteral",
"src": "271:1:84",
"type": "",
"value": "0"
},
{
"arguments": [
{
"kind": "number",
"nativeSrc": "278:3:84",
"nodeType": "YulLiteral",
"src": "278:3:84",
"type": "",
"value": "224"
},
{
"kind": "number",
"nativeSrc": "283:10:84",
"nodeType": "YulLiteral",
"src": "283:10:84",
"type": "",
"value": "0x4e487b71"
}
],
"functionName": {
"name": "shl",
"nativeSrc": "274:3:84",
"nodeType": "YulIdentifier",
"src": "274:3:84"
},
"nativeSrc": "274:20:84",
"nodeType": "YulFunctionCall",
"src": "274:20:84"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "264:6:84",
"nodeType": "YulIdentifier",
"src": "264:6:84"
},
"nativeSrc": "264:31:84",
"nodeType": "YulFunctionCall",
"src": "264:31:84"
},
"nativeSrc": "264:31:84",
"nodeType": "YulExpressionStatement",
"src": "264:31:84"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "311:1:84",
"nodeType": "YulLiteral",
"src": "311:1:84",
"type": "",
"value": "4"
},
{
"kind": "number",
"nativeSrc": "314:4:84",
"nodeType": "YulLiteral",
"src": "314:4:84",
"type": "",
"value": "0x41"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "304:6:84",
"nodeType": "YulIdentifier",
"src": "304:6:84"
},
"nativeSrc": "304:15:84",
"nodeType": "YulFunctionCall",
"src": "304:15:84"
},
"nativeSrc": "304:15:84",
"nodeType": "YulExpressionStatement",
"src": "304:15:84"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "335:1:84",
"nodeType": "YulLiteral",
"src": "335:1:84",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "338:4:84",
"nodeType": "YulLiteral",
"src": "338:4:84",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "328:6:84",
"nodeType": "YulIdentifier",
"src": "328:6:84"
},
"nativeSrc": "328:15:84",
"nodeType": "YulFunctionCall",
"src": "328:15:84"
},
"nativeSrc": "328:15:84",
"nodeType": "YulExpressionStatement",
"src": "328:15:84"
}
]
},
"name": "panic_error_0x41",
"nativeSrc": "222:127:84",
"nodeType": "YulFunctionDefinition",
"src": "222:127:84"
},
{
"body": {
"nativeSrc": "399:230:84",
"nodeType": "YulBlock",
"src": "399:230:84",
"statements": [
{
"nativeSrc": "409:19:84",
"nodeType": "YulAssignment",
"src": "409:19:84",
"value": {
"arguments": [
{
"kind": "number",
"nativeSrc": "425:2:84",
"nodeType": "YulLiteral",
"src": "425:2:84",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "419:5:84",
"nodeType": "YulIdentifier",
"src": "419:5:84"
},
"nativeSrc": "419:9:84",
"nodeType": "YulFunctionCall",
"src": "419:9:84"
},
"variableNames": [
{
"name": "memPtr",
"nativeSrc": "409:6:84",
"nodeType": "YulIdentifier",
"src": "409:6:84"
}
]
},
{
"nativeSrc": "437:58:84",
"nodeType": "YulVariableDeclaration",
"src": "437:58:84",
"value": {
"arguments": [
{
"name": "memPtr",
"nativeSrc": "459:6:84",
"nodeType": "YulIdentifier",
"src": "459:6:84"
},
{
"arguments": [
{
"arguments": [
{
"name": "size",
"nativeSrc": "475:4:84",
"nodeType": "YulIdentifier",
"src": "475:4:84"
},
{
"kind": "number",
"nativeSrc": "481:2:84",
"nodeType": "YulLiteral",
"src": "481:2:84",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nativeSrc": "471:3:84",
"nodeType": "YulIdentifier",
"src": "471:3:84"
},
"nativeSrc": "471:13:84",
"nodeType": "YulFunctionCall",
"src": "471:13:84"
},
{
"arguments": [
{
"kind": "number",
"nativeSrc": "490:2:84",
"nodeType": "YulLiteral",
"src": "490:2:84",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nativeSrc": "486:3:84",
"nodeType": "YulIdentifier",
"src": "486:3:84"
},
"nativeSrc": "486:7:84",
"nodeType": "YulFunctionCall",
"src": "486:7:84"
}
],
"functionName": {
"name": "and",
"nativeSrc": "467:3:84",
"nodeType": "YulIdentifier",
"src": "467:3:84"
},
"nativeSrc": "467:27:84",
"nodeType": "YulFunctionCall",
"src": "467:27:84"
}
],
"functionName": {
"name": "add",
"nativeSrc": "455:3:84",
"nodeType": "YulIdentifier",
"src": "455:3:84"
},
"nativeSrc": "455:40:84",
"nodeType": "YulFunctionCall",
"src": "455:40:84"
},
"variables": [
{
"name": "newFreePtr",
"nativeSrc": "441:10:84",
"nodeType": "YulTypedName",
"src": "441:10:84",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "570:22:84",
"nodeType": "YulBlock",
"src": "570:22:84",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nativeSrc": "572:16:84",
"nodeType": "YulIdentifier",
"src": "572:16:84"
},
"nativeSrc": "572:18:84",
"nodeType": "YulFunctionCall",
"src": "572:18:84"
},
"nativeSrc": "572:18:84",
"nodeType": "YulExpressionStatement",
"src": "572:18:84"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "newFreePtr",
"nativeSrc": "513:10:84",
"nodeType": "YulIdentifier",
"src": "513:10:84"
},
{
"kind": "number",
"nativeSrc": "525:18:84",
"nodeType": "YulLiteral",
"src": "525:18:84",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "510:2:84",
"nodeType": "YulIdentifier",
"src": "510:2:84"
},
"nativeSrc": "510:34:84",
"nodeType": "YulFunctionCall",
"src": "510:34:84"
},
{
"arguments": [
{
"name": "newFreePtr",
"nativeSrc": "549:10:84",
"nodeType": "YulIdentifier",
"src": "549:10:84"
},
{
"name": "memPtr",
"nativeSrc": "561:6:84",
"nodeType": "YulIdentifier",
"src": "561:6:84"
}
],
"functionName": {
"name": "lt",
"nativeSrc": "546:2:84",
"nodeType": "YulIdentifier",
"src": "546:2:84"
},
"nativeSrc": "546:22:84",
"nodeType": "YulFunctionCall",
"src": "546:22:84"
}
],
"functionName": {
"name": "or",
"nativeSrc": "507:2:84",
"nodeType": "YulIdentifier",
"src": "507:2:84"
},
"nativeSrc": "507:62:84",
"nodeType": "YulFunctionCall",
"src": "507:62:84"
},
"nativeSrc": "504:88:84",
"nodeType": "YulIf",
"src": "504:88:84"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "608:2:84",
"nodeType": "YulLiteral",
"src": "608:2:84",
"type": "",
"value": "64"
},
{
"name": "newFreePtr",
"nativeSrc": "612:10:84",
"nodeType": "YulIdentifier",
"src": "612:10:84"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "601:6:84",
"nodeType": "YulIdentifier",
"src": "601:6:84"
},
"nativeSrc": "601:22:84",
"nodeType": "YulFunctionCall",
"src": "601:22:84"
},
"nativeSrc": "601:22:84",
"nodeType": "YulExpressionStatement",
"src": "601:22:84"
}
]
},
"name": "allocate_memory",
"nativeSrc": "354:275:84",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "size",
"nativeSrc": "379:4:84",
"nodeType": "YulTypedName",
"src": "379:4:84",
"type": ""
}
],
"returnVariables": [
{
"name": "memPtr",
"nativeSrc": "388:6:84",
"nodeType": "YulTypedName",
"src": "388:6:84",
"type": ""
}
],
"src": "354:275:84"
},
{
"body": {
"nativeSrc": "691:129:84",
"nodeType": "YulBlock",
"src": "691:129:84",
"statements": [
{
"body": {
"nativeSrc": "735:22:84",
"nodeType": "YulBlock",
"src": "735:22:84",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nativeSrc": "737:16:84",
"nodeType": "YulIdentifier",
"src": "737:16:84"
},
"nativeSrc": "737:18:84",
"nodeType": "YulFunctionCall",
"src": "737:18:84"
},
"nativeSrc": "737:18:84",
"nodeType": "YulExpressionStatement",
"src": "737:18:84"
}
]
},
"condition": {
"arguments": [
{
"name": "length",
"nativeSrc": "707:6:84",
"nodeType": "YulIdentifier",
"src": "707:6:84"
},
{
"kind": "number",
"nativeSrc": "715:18:84",
"nodeType": "YulLiteral",
"src": "715:18:84",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "704:2:84",
"nodeType": "YulIdentifier",
"src": "704:2:84"
},
"nativeSrc": "704:30:84",
"nodeType": "YulFunctionCall",
"src": "704:30:84"
},
"nativeSrc": "701:56:84",
"nodeType": "YulIf",
"src": "701:56:84"
},
{
"nativeSrc": "766:48:84",
"nodeType": "YulAssignment",
"src": "766:48:84",
"value": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "length",
"nativeSrc": "786:6:84",
"nodeType": "YulIdentifier",
"src": "786:6:84"
},
{
"kind": "number",
"nativeSrc": "794:2:84",
"nodeType": "YulLiteral",
"src": "794:2:84",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nativeSrc": "782:3:84",
"nodeType": "YulIdentifier",
"src": "782:3:84"
},
"nativeSrc": "782:15:84",
"nodeType": "YulFunctionCall",
"src": "782:15:84"
},
{
"arguments": [
{
"kind": "number",
"nativeSrc": "803:2:84",
"nodeType": "YulLiteral",
"src": "803:2:84",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nativeSrc": "799:3:84",
"nodeType": "YulIdentifier",
"src": "799:3:84"
},
"nativeSrc": "799:7:84",
"nodeType": "YulFunctionCall",
"src": "799:7:84"
}
],
"functionName": {
"name": "and",
"nativeSrc": "778:3:84",
"nodeType": "YulIdentifier",
"src": "778:3:84"
},
"nativeSrc": "778:29:84",
"nodeType": "YulFunctionCall",
"src": "778:29:84"
},
{
"kind": "number",
"nativeSrc": "809:4:84",
"nodeType": "YulLiteral",
"src": "809:4:84",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "774:3:84",
"nodeType": "YulIdentifier",
"src": "774:3:84"
},
"nativeSrc": "774:40:84",
"nodeType": "YulFunctionCall",
"src": "774:40:84"
},
"variableNames": [
{
"name": "size",
"nativeSrc": "766:4:84",
"nodeType": "YulIdentifier",
"src": "766:4:84"
}
]
}
]
},
"name": "array_allocation_size_bytes",
"nativeSrc": "634:186:84",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "length",
"nativeSrc": "671:6:84",
"nodeType": "YulTypedName",
"src": "671:6:84",
"type": ""
}
],
"returnVariables": [
{
"name": "size",
"nativeSrc": "682:4:84",
"nodeType": "YulTypedName",
"src": "682:4:84",
"type": ""
}
],
"src": "634:186:84"
},
{
"body": {
"nativeSrc": "921:749:84",
"nodeType": "YulBlock",
"src": "921:749:84",
"statements": [
{
"body": {
"nativeSrc": "967:16:84",
"nodeType": "YulBlock",
"src": "967:16:84",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "976:1:84",
"nodeType": "YulLiteral",
"src": "976:1:84",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "979:1:84",
"nodeType": "YulLiteral",
"src": "979:1:84",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "969:6:84",
"nodeType": "YulIdentifier",
"src": "969:6:84"
},
"nativeSrc": "969:12:84",
"nodeType": "YulFunctionCall",
"src": "969:12:84"
},
"nativeSrc": "969:12:84",
"nodeType": "YulExpressionStatement",
"src": "969:12:84"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nativeSrc": "942:7:84",
"nodeType": "YulIdentifier",
"src": "942:7:84"
},
{
"name": "headStart",
"nativeSrc": "951:9:84",
"nodeType": "YulIdentifier",
"src": "951:9:84"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "938:3:84",
"nodeType": "YulIdentifier",
"src": "938:3:84"
},
"nativeSrc": "938:23:84",
"nodeType": "YulFunctionCall",
"src": "938:23:84"
},
{
"kind": "number",
"nativeSrc": "963:2:84",
"nodeType": "YulLiteral",
"src": "963:2:84",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nativeSrc": "934:3:84",
"nodeType": "YulIdentifier",
"src": "934:3:84"
},
"nativeSrc": "934:32:84",
"nodeType": "YulFunctionCall",
"src": "934:32:84"
},
"nativeSrc": "931:52:84",
"nodeType": "YulIf",