witnet-solidity-bridge
Version:
Witnet Solidity Bridge contracts for EVM-compatible chains
798 lines (797 loc) • 259 kB
JSON
{
"contractName": "WitnetDeployerMeter",
"abi": [
{
"inputs": [
{
"internalType": "bytes",
"name": "_initCode",
"type": "bytes"
},
{
"internalType": "bytes32",
"name": "_salt",
"type": "bytes32"
}
],
"name": "deploy",
"outputs": [
{
"internalType": "address",
"name": "_deployed",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes",
"name": "_initCode",
"type": "bytes"
},
{
"internalType": "bytes32",
"name": "_salt",
"type": "bytes32"
}
],
"name": "determineAddr",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_salt",
"type": "bytes32"
}
],
"name": "determineProxyAddr",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_proxySalt",
"type": "bytes32"
},
{
"internalType": "address",
"name": "_firstImplementation",
"type": "address"
},
{
"internalType": "bytes",
"name": "_initData",
"type": "bytes"
}
],
"name": "proxify",
"outputs": [
{
"internalType": "contract WitnetProxy",
"name": "",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
],
"metadata": "{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"_salt\",\"type\":\"bytes32\"}],\"name\":\"deploy\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"_deployed\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"_salt\",\"type\":\"bytes32\"}],\"name\":\"determineAddr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_salt\",\"type\":\"bytes32\"}],\"name\":\"determineProxyAddr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_proxySalt\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_firstImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_initData\",\"type\":\"bytes\"}],\"name\":\"proxify\",\"outputs\":[{\"internalType\":\"contract WitnetProxy\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Guillermo D\\u00edaz <guillermo@witnet.io>\",\"kind\":\"dev\",\"methods\":{\"deploy(bytes,bytes32)\":{\"details\":\"The address of deployed address will be determined by both the `_initCode` and the `_salt`, but not the addressnor the nonce of the caller (i.e. see EIP-1014). \",\"params\":{\"_initCode\":\"Creation code, including construction logic and input parameters.\",\"_salt\":\"Arbitrary value to modify resulting address.\"},\"returns\":{\"_deployed\":\"Just deployed contract address.\"}},\"determineAddr(bytes,bytes32)\":{\"params\":{\"_initCode\":\"Creation code, including construction logic and input parameters.\",\"_salt\":\"Arbitrary value to modify resulting address.\"},\"returns\":{\"_0\":\"Deterministic contract address.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"deploy(bytes,bytes32)\":{\"notice\":\"Use given `_initCode` and `_salt` to deploy a contract into a deterministic address. \"},\"determineAddr(bytes,bytes32)\":{\"notice\":\"Determine counter-factual address of the contract that would be deployed by the given `_initCode` and a `_salt`.\"}},\"notice\":\"WitnetDeployerMeter contract used both as CREATE2 factory (EIP-1014) for Witnet artifacts, and CREATE3 factory (EIP-3171) for Witnet proxies, on the Meter Ecosystem.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/core/WitnetDeployerMeter.sol\":\"WitnetDeployerMeter\"},\"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/WitnetDeployer.sol\":{\"keccak256\":\"0xa048c54e33bcd337112df5e3c8d3a528ad91179bda1963b3b08eb022d36cc038\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d37c3f74831d38abfdf76345f2c9190198643204f8ec2b4c515eb32d609b8f9\",\"dweb:/ipfs/QmcD6mDyAcs2nxnQjmU5Yu9dLuLuGuBkLj9LnFCbeu5gjV\"]},\"project:/contracts/core/WitnetDeployerMeter.sol\":{\"keccak256\":\"0x0f4a4195326412577590e3afee7c621e10c2383137a4cad7020cb347e23af05c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0267dd2f17aa3fa389b8e376b04697402f3b4b8d3d57801027bb940e148c24dc\",\"dweb:/ipfs/QmdbUxhgPjb4NLg1T7U4qbFcyEkRb5uiBQDQGCJHiqrNQa\"]},\"project:/contracts/core/WitnetProxy.sol\":{\"keccak256\":\"0x6f0ec2c544192c9439bde88f5ed4efec5bdef506cb0dcb739c29329a798033fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca05338334632aab3aef3c17a4b8686251ec488da49b9fcd3712642e57e0ce2a\",\"dweb:/ipfs/QmZk1uDdytKFii4TXUnJkFBBB3CZVSPKKR85ugFjWUTufS\"]},\"project:/contracts/libs/Create3.sol\":{\"keccak256\":\"0xfbda4c773f859bef9d7878ca9412f244da85f7bd49df07c49a17544f4708d718\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://0f83b72ad1c35c707cc6daa4e8266d9d711f561a188fbb0be1885d3f08146ca6\",\"dweb:/ipfs/QmPJwdieqkxoSvqmczAtRMfb5EN8uWiabqMKj4yVqsUncv\"]},\"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": "0x6080604052348015600e575f5ffd5b50610ec28061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061004a575f3560e01c80634998f0381461004e5780634af63f021461007d5780635ba489e714610090578063d3933c29146100a3575b5f5ffd5b61006161005c366004610320565b6100b6565b6040516001600160a01b03909116815260200160405180910390f35b61006161008b3660046103d6565b6100e9565b61006161009e366004610418565b610177565b6100616100b13660046103d6565b6102b7565b5f6100e3604051806020016100ca90610313565b601f1982820381018352601f90910116604052836102b7565b92915050565b5f6100f483836102b7565b9050806001600160a01b03163b5f036100e357818351602085015ff590506001600160a01b0381166100e35760405162461bcd60e51b815260206004820152602160248201527f5769746e65744465706c6f7965723a206465706c6f796d656e74206661696c656044820152601960fa1b60648201526084015b60405180910390fd5b5f5f610182856100b6565b9050806001600160a01b03163b5f03610259576101c1604051806020016101a890610313565b601f1982820381018352601f90910116604052866100e9565b50806001600160a01b0316636fbc15e98533866040516020016101e5929190610478565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401610211929190610478565b6020604051808303815f875af115801561022d573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061025191906104bc565b5090506102b0565b60405162461bcd60e51b815260206004820152602660248201527f5769746e65744465706c6f7965724d657465723a20616c72656164792070726f6044820152651e1a599a595960d21b606482015260840161016e565b9392505050565b8151602092830120604080516001600160f81b0319818601523060601b6bffffffffffffffffffffffff191660218201526035810193909352605580840192909252805180840390920182526075909201909152805191012090565b6109b1806104dc83390190565b5f60208284031215610330575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011261035a575f5ffd5b813567ffffffffffffffff81111561037457610374610337565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156103a3576103a3610337565b6040528181528382016020018510156103ba575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f604083850312156103e7575f5ffd5b823567ffffffffffffffff8111156103fd575f5ffd5b6104098582860161034b565b95602094909401359450505050565b5f5f5f6060848603121561042a575f5ffd5b8335925060208401356001600160a01b0381168114610447575f5ffd5b9150604084013567ffffffffffffffff811115610462575f5ffd5b61046e8682870161034b565b9150509250925092565b60018060a01b0383168152604060208201525f82518060408401528060208501606085015e5f606082850101526060601f19601f8301168401019150509392505050565b5f602082840312156104cc575f5ffd5b815180151581146102b0575f5ffdfe6080604052348015600e575f5ffd5b506109958061001c5f395ff3fe60806040526004361061002c575f3560e01c80635c60da1b146100605780636fbc15e91461009157610033565b3661003357005b5f61003c6100c0565b9050604051365f82375f5f3683855af43d805f843e81801561005c578184f35b8184fd5b34801561006b575f5ffd5b506100746100c0565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561009c575f5ffd5b506100b06100ab366004610778565b6100ee565b6040519015158152602001610088565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b5f6001600160a01b03831661014a5760405162461bcd60e51b815260206004820181905260248201527f5769746e657450726f78793a206e756c6c20696d706c656d656e746174696f6e60448201526064015b60405180910390fd5b5f6101536100c0565b90506001600160a01b038116156104f757806001600160a01b0316846001600160a01b0316036101c55760405162461bcd60e51b815260206004820152601f60248201527f5769746e657450726f78793a206e6f7468696e6720746f2075706772616465006044820152606401610141565b806001600160a01b0316635479d9406040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561021f575060408051601f3d908101601f1916820190925261021c91810190610810565b60015b61027e5760405162461bcd60e51b815260206004820152602a60248201527f5769746e657450726f78793a20756e61626c6520746f20636865636b207570676044820152697261646162696c69747960b01b6064820152608401610141565b806102cb5760405162461bcd60e51b815260206004820152601b60248201527f5769746e657450726f78793a206e6f742075706772616461626c6500000000006044820152606401610141565b506040513360248201525f9081906001600160a01b0384169060440160408051601f198184030181529181526020820180516001600160e01b03166335ac4b0560e11b1790525161031c9190610836565b5f60405180830381855af49150503d805f8114610354576040519150601f19603f3d011682016040523d82523d5f602084013e610359565b606091505b50915091508161037b5760405162461bcd60e51b81526004016101419061084c565b8080602001905181019061038f9190610810565b6103db5760405162461bcd60e51b815260206004820152601b60248201527f5769746e657450726f78793a206e6f7420617574686f72697a656400000000006044820152606401610141565b856001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610417573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061043b9190610893565b836001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610477573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061049b9190610893565b146104f45760405162461bcd60e51b8152602060048201526024808201527f5769746e657450726f78793a2070726f786961626c655555494473206d69736d6044820152630c2e8c6d60e31b6064820152608401610141565b50505b5f5f856001600160a01b03168560405160240161051491906108d8565b60408051601f198184030181529181526020820180516001600160e01b031663439fab9160e01b179052516105499190610836565b5f60405180830381855af49150503d805f8114610581576040519150601f19603f3d011682016040523d82523d5f602084013e610586565b606091505b509150915081610620576044815110156105ed5760405162461bcd60e51b815260206004820152602260248201527f5769746e657450726f78793a20696e697469616c697a6174696f6e206661696c604482015261195960f21b6064820152608401610141565b6004810190508080602001905181019061060791906108ea565b60405162461bcd60e51b815260040161014191906108d8565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0388169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2856001600160a01b0316635479d9406040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156106df575060408051601f3d908101601f191682019092526106dc91810190610810565b60015b6106fb5760405162461bcd60e51b81526004016101419061084c565b935061070692505050565b92915050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156107495761074961070c565b604052919050565b5f67ffffffffffffffff82111561076a5761076a61070c565b50601f01601f191660200190565b5f5f60408385031215610789575f5ffd5b82356001600160a01b038116811461079f575f5ffd5b9150602083013567ffffffffffffffff8111156107ba575f5ffd5b8301601f810185136107ca575f5ffd5b80356107dd6107d882610751565b610720565b8181528660208385010111156107f1575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60208284031215610820575f5ffd5b8151801515811461082f575f5ffd5b9392505050565b5f82518060208501845e5f920191825250919050565b60208082526027908201527f5769746e657450726f78793a20756e636f6d706c69616e7420696d706c656d65604082015266373a30ba34b7b760c91b606082015260800190565b5f602082840312156108a3575f5ffd5b5051919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61082f60208301846108aa565b5f602082840312156108fa575f5ffd5b815167ffffffffffffffff811115610910575f5ffd5b8201601f81018413610920575f5ffd5b805161092e6107d882610751565b818152856020838501011115610942575f5ffd5b8160208401602083015e5f9181016020019190915294935050505056fea2646970667358221220a8415d02311c8820d22429929d1fce9f26d5e64d00552717dedf051fcf03fde664736f6c634300081e0033a2646970667358221220faf969e3b1fc6c7e4492e366b9d55c1458f7d5288667ceb70fbc3dee88eb844d64736f6c634300081e0033",
"deployedBytecode": "0x608060405234801561000f575f5ffd5b506004361061004a575f3560e01c80634998f0381461004e5780634af63f021461007d5780635ba489e714610090578063d3933c29146100a3575b5f5ffd5b61006161005c366004610320565b6100b6565b6040516001600160a01b03909116815260200160405180910390f35b61006161008b3660046103d6565b6100e9565b61006161009e366004610418565b610177565b6100616100b13660046103d6565b6102b7565b5f6100e3604051806020016100ca90610313565b601f1982820381018352601f90910116604052836102b7565b92915050565b5f6100f483836102b7565b9050806001600160a01b03163b5f036100e357818351602085015ff590506001600160a01b0381166100e35760405162461bcd60e51b815260206004820152602160248201527f5769746e65744465706c6f7965723a206465706c6f796d656e74206661696c656044820152601960fa1b60648201526084015b60405180910390fd5b5f5f610182856100b6565b9050806001600160a01b03163b5f03610259576101c1604051806020016101a890610313565b601f1982820381018352601f90910116604052866100e9565b50806001600160a01b0316636fbc15e98533866040516020016101e5929190610478565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401610211929190610478565b6020604051808303815f875af115801561022d573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061025191906104bc565b5090506102b0565b60405162461bcd60e51b815260206004820152602660248201527f5769746e65744465706c6f7965724d657465723a20616c72656164792070726f6044820152651e1a599a595960d21b606482015260840161016e565b9392505050565b8151602092830120604080516001600160f81b0319818601523060601b6bffffffffffffffffffffffff191660218201526035810193909352605580840192909252805180840390920182526075909201909152805191012090565b6109b1806104dc83390190565b5f60208284031215610330575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011261035a575f5ffd5b813567ffffffffffffffff81111561037457610374610337565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156103a3576103a3610337565b6040528181528382016020018510156103ba575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f604083850312156103e7575f5ffd5b823567ffffffffffffffff8111156103fd575f5ffd5b6104098582860161034b565b95602094909401359450505050565b5f5f5f6060848603121561042a575f5ffd5b8335925060208401356001600160a01b0381168114610447575f5ffd5b9150604084013567ffffffffffffffff811115610462575f5ffd5b61046e8682870161034b565b9150509250925092565b60018060a01b0383168152604060208201525f82518060408401528060208501606085015e5f606082850101526060601f19601f8301168401019150509392505050565b5f602082840312156104cc575f5ffd5b815180151581146102b0575f5ffdfe6080604052348015600e575f5ffd5b506109958061001c5f395ff3fe60806040526004361061002c575f3560e01c80635c60da1b146100605780636fbc15e91461009157610033565b3661003357005b5f61003c6100c0565b9050604051365f82375f5f3683855af43d805f843e81801561005c578184f35b8184fd5b34801561006b575f5ffd5b506100746100c0565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561009c575f5ffd5b506100b06100ab366004610778565b6100ee565b6040519015158152602001610088565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b5f6001600160a01b03831661014a5760405162461bcd60e51b815260206004820181905260248201527f5769746e657450726f78793a206e756c6c20696d706c656d656e746174696f6e60448201526064015b60405180910390fd5b5f6101536100c0565b90506001600160a01b038116156104f757806001600160a01b0316846001600160a01b0316036101c55760405162461bcd60e51b815260206004820152601f60248201527f5769746e657450726f78793a206e6f7468696e6720746f2075706772616465006044820152606401610141565b806001600160a01b0316635479d9406040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561021f575060408051601f3d908101601f1916820190925261021c91810190610810565b60015b61027e5760405162461bcd60e51b815260206004820152602a60248201527f5769746e657450726f78793a20756e61626c6520746f20636865636b207570676044820152697261646162696c69747960b01b6064820152608401610141565b806102cb5760405162461bcd60e51b815260206004820152601b60248201527f5769746e657450726f78793a206e6f742075706772616461626c6500000000006044820152606401610141565b506040513360248201525f9081906001600160a01b0384169060440160408051601f198184030181529181526020820180516001600160e01b03166335ac4b0560e11b1790525161031c9190610836565b5f60405180830381855af49150503d805f8114610354576040519150601f19603f3d011682016040523d82523d5f602084013e610359565b606091505b50915091508161037b5760405162461bcd60e51b81526004016101419061084c565b8080602001905181019061038f9190610810565b6103db5760405162461bcd60e51b815260206004820152601b60248201527f5769746e657450726f78793a206e6f7420617574686f72697a656400000000006044820152606401610141565b856001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610417573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061043b9190610893565b836001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610477573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061049b9190610893565b146104f45760405162461bcd60e51b8152602060048201526024808201527f5769746e657450726f78793a2070726f786961626c655555494473206d69736d6044820152630c2e8c6d60e31b6064820152608401610141565b50505b5f5f856001600160a01b03168560405160240161051491906108d8565b60408051601f198184030181529181526020820180516001600160e01b031663439fab9160e01b179052516105499190610836565b5f60405180830381855af49150503d805f8114610581576040519150601f19603f3d011682016040523d82523d5f602084013e610586565b606091505b509150915081610620576044815110156105ed5760405162461bcd60e51b815260206004820152602260248201527f5769746e657450726f78793a20696e697469616c697a6174696f6e206661696c604482015261195960f21b6064820152608401610141565b6004810190508080602001905181019061060791906108ea565b60405162461bcd60e51b815260040161014191906108d8565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0388169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2856001600160a01b0316635479d9406040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156106df575060408051601f3d908101601f191682019092526106dc91810190610810565b60015b6106fb5760405162461bcd60e51b81526004016101419061084c565b935061070692505050565b92915050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156107495761074961070c565b604052919050565b5f67ffffffffffffffff82111561076a5761076a61070c565b50601f01601f191660200190565b5f5f60408385031215610789575f5ffd5b82356001600160a01b038116811461079f575f5ffd5b9150602083013567ffffffffffffffff8111156107ba575f5ffd5b8301601f810185136107ca575f5ffd5b80356107dd6107d882610751565b610720565b8181528660208385010111156107f1575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60208284031215610820575f5ffd5b8151801515811461082f575f5ffd5b9392505050565b5f82518060208501845e5f920191825250919050565b60208082526027908201527f5769746e657450726f78793a20756e636f6d706c69616e7420696d706c656d65604082015266373a30ba34b7b760c91b606082015260800190565b5f602082840312156108a3575f5ffd5b5051919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61082f60208301846108aa565b5f602082840312156108fa575f5ffd5b815167ffffffffffffffff811115610910575f5ffd5b8201601f81018413610920575f5ffd5b805161092e6107d882610751565b818152856020838501011115610942575f5ffd5b8160208401602083015e5f9181016020019190915294935050505056fea2646970667358221220a8415d02311c8820d22429929d1fce9f26d5e64d00552717dedf051fcf03fde664736f6c634300081e0033a2646970667358221220faf969e3b1fc6c7e4492e366b9d55c1458f7d5288667ceb70fbc3dee88eb844d64736f6c634300081e0033",
"immutableReferences": {},
"generatedSources": [],
"deployedGeneratedSources": [
{
"ast": {
"nativeSrc": "0:4663:136",
"nodeType": "YulBlock",
"src": "0:4663:136",
"statements": [
{
"nativeSrc": "6:3:136",
"nodeType": "YulBlock",
"src": "6:3:136",
"statements": []
},
{
"body": {
"nativeSrc": "84:156:136",
"nodeType": "YulBlock",
"src": "84:156:136",
"statements": [
{
"body": {
"nativeSrc": "130:16:136",
"nodeType": "YulBlock",
"src": "130:16:136",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "139:1:136",
"nodeType": "YulLiteral",
"src": "139:1:136",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "142:1:136",
"nodeType": "YulLiteral",
"src": "142:1:136",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "132:6:136",
"nodeType": "YulIdentifier",
"src": "132:6:136"
},
"nativeSrc": "132:12:136",
"nodeType": "YulFunctionCall",
"src": "132:12:136"
},
"nativeSrc": "132:12:136",
"nodeType": "YulExpressionStatement",
"src": "132:12:136"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nativeSrc": "105:7:136",
"nodeType": "YulIdentifier",
"src": "105:7:136"
},
{
"name": "headStart",
"nativeSrc": "114:9:136",
"nodeType": "YulIdentifier",
"src": "114:9:136"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "101:3:136",
"nodeType": "YulIdentifier",
"src": "101:3:136"
},
"nativeSrc": "101:23:136",
"nodeType": "YulFunctionCall",
"src": "101:23:136"
},
{
"kind": "number",
"nativeSrc": "126:2:136",
"nodeType": "YulLiteral",
"src": "126:2:136",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nativeSrc": "97:3:136",
"nodeType": "YulIdentifier",
"src": "97:3:136"
},
"nativeSrc": "97:32:136",
"nodeType": "YulFunctionCall",
"src": "97:32:136"
},
"nativeSrc": "94:52:136",
"nodeType": "YulIf",
"src": "94:52:136"
},
{
"nativeSrc": "155:14:136",
"nodeType": "YulVariableDeclaration",
"src": "155:14:136",
"value": {
"kind": "number",
"nativeSrc": "168:1:136",
"nodeType": "YulLiteral",
"src": "168:1:136",
"type": "",
"value": "0"
},
"variables": [
{
"name": "value",
"nativeSrc": "159:5:136",
"nodeType": "YulTypedName",
"src": "159:5:136",
"type": ""
}
]
},
{
"nativeSrc": "178:32:136",
"nodeType": "YulAssignment",
"src": "178:32:136",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "200:9:136",
"nodeType": "YulIdentifier",
"src": "200:9:136"
}
],
"functionName": {
"name": "calldataload",
"nativeSrc": "187:12:136",
"nodeType": "YulIdentifier",
"src": "187:12:136"
},
"nativeSrc": "187:23:136",
"nodeType": "YulFunctionCall",
"src": "187:23:136"
},
"variableNames": [
{
"name": "value",
"nativeSrc": "178:5:136",
"nodeType": "YulIdentifier",
"src": "178:5:136"
}
]
},
{
"nativeSrc": "219:15:136",
"nodeType": "YulAssignment",
"src": "219:15:136",
"value": {
"name": "value",
"nativeSrc": "229:5:136",
"nodeType": "YulIdentifier",
"src": "229:5:136"
},
"variableNames": [
{
"name": "value0",
"nativeSrc": "219:6:136",
"nodeType": "YulIdentifier",
"src": "219:6:136"
}
]
}
]
},
"name": "abi_decode_tuple_t_bytes32",
"nativeSrc": "14:226:136",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "50:9:136",
"nodeType": "YulTypedName",
"src": "50:9:136",
"type": ""
},
{
"name": "dataEnd",
"nativeSrc": "61:7:136",
"nodeType": "YulTypedName",
"src": "61:7:136",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nativeSrc": "73:6:136",
"nodeType": "YulTypedName",
"src": "73:6:136",
"type": ""
}
],
"src": "14:226:136"
},
{
"body": {
"nativeSrc": "346:102:136",
"nodeType": "YulBlock",
"src": "346:102:136",
"statements": [
{
"nativeSrc": "356:26:136",
"nodeType": "YulAssignment",
"src": "356:26:136",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "368:9:136",
"nodeType": "YulIdentifier",
"src": "368:9:136"
},
{
"kind": "number",
"nativeSrc": "379:2:136",
"nodeType": "YulLiteral",
"src": "379:2:136",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "364:3:136",
"nodeType": "YulIdentifier",
"src": "364:3:136"
},
"nativeSrc": "364:18:136",
"nodeType": "YulFunctionCall",
"src": "364:18:136"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "356:4:136",
"nodeType": "YulIdentifier",
"src": "356:4:136"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "398:9:136",
"nodeType": "YulIdentifier",
"src": "398:9:136"
},
{
"arguments": [
{
"name": "value0",
"nativeSrc": "413:6:136",
"nodeType": "YulIdentifier",
"src": "413:6:136"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nativeSrc": "429:3:136",
"nodeType": "YulLiteral",
"src": "429:3:136",
"type": "",
"value": "160"
},
{
"kind": "number",
"nativeSrc": "434:1:136",
"nodeType": "YulLiteral",
"src": "434:1:136",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nativeSrc": "425:3:136",
"nodeType": "YulIdentifier",
"src": "425:3:136"
},
"nativeSrc": "425:11:136",
"nodeType": "YulFunctionCall",
"src": "425:11:136"
},
{
"kind": "number",
"nativeSrc": "438:1:136",
"nodeType": "YulLiteral",
"src": "438:1:136",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "421:3:136",
"nodeType": "YulIdentifier",
"src": "421:3:136"
},
"nativeSrc": "421:19:136",
"nodeType": "YulFunctionCall",
"src": "421:19:136"
}
],
"functionName": {
"name": "and",
"nativeSrc": "409:3:136",
"nodeType": "YulIdentifier",
"src": "409:3:136"
},
"nativeSrc": "409:32:136",
"nodeType": "YulFunctionCall",
"src": "409:32:136"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "391:6:136",
"nodeType": "YulIdentifier",
"src": "391:6:136"
},
"nativeSrc": "391:51:136",
"nodeType": "YulFunctionCall",
"src": "391:51:136"
},
"nativeSrc": "391:51:136",
"nodeType": "YulExpressionStatement",
"src": "391:51:136"
}
]
},
"name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
"nativeSrc": "245:203:136",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "315:9:136",
"nodeType": "YulTypedName",
"src": "315:9:136",
"type": ""
},
{
"name": "value0",
"nativeSrc": "326:6:136",
"nodeType": "YulTypedName",
"src": "326:6:136",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "337:4:136",
"nodeType": "YulTypedName",
"src": "337:4:136",
"type": ""
}
],
"src": "245:203:136"
},
{
"body": {
"nativeSrc": "485:95:136",
"nodeType": "YulBlock",
"src": "485:95:136",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "502:1:136",
"nodeType": "YulLiteral",
"src": "502:1:136",
"type": "",
"value": "0"
},
{
"arguments": [
{
"kind": "number",
"nativeSrc": "509:3:136",
"nodeType": "YulLiteral",
"src": "509:3:136",
"type": "",
"value": "224"
},
{
"kind": "number",
"nativeSrc": "514:10:136",
"nodeType": "YulLiteral",
"src": "514:10:136",
"type": "",
"value": "0x4e487b71"
}
],
"functionName": {
"name": "shl",
"nativeSrc": "505:3:136",
"nodeType": "YulIdentifier",
"src": "505:3:136"
},
"nativeSrc": "505:20:136",
"nodeType": "YulFunctionCall",
"src": "505:20:136"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "495:6:136",
"nodeType": "YulIdentifier",
"src": "495:6:136"
},
"nativeSrc": "495:31:136",
"nodeType": "YulFunctionCall",
"src": "495:31:136"
},
"nativeSrc": "495:31:136",
"nodeType": "YulExpressionStatement",
"src": "495:31:136"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "542:1:136",
"nodeType": "YulLiteral",
"src": "542:1:136",
"type": "",
"value": "4"
},
{
"kind": "number",
"nativeSrc": "545:4:136",
"nodeType": "YulLiteral",
"src": "545:4:136",
"type": "",
"value": "0x41"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "535:6:136",
"nodeType": "YulIdentifier",
"src": "535:6:136"
},
"nativeSrc": "535:15:136",
"nodeType": "YulFunctionCall",
"src": "535:15:136"
},
"nativeSrc": "535:15:136",
"nodeType": "YulExpressionStatement",
"src": "535:15:136"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "566:1:136",
"nodeType": "YulLiteral",
"src": "566:1:136",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "569:4:136",
"nodeType": "YulLiteral",
"src": "569:4:136",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "559:6:136",
"nodeType": "YulIdentifier",
"src": "559:6:136"
},
"nativeSrc": "559:15:136",
"nodeType": "YulFunctionCall",
"src": "559:15:136"
},
"nativeSrc": "559:15:136",
"nodeType": "YulExpressionStatement",
"src": "559:15:136"
}
]
},
"name": "panic_error_0x41",
"nativeSrc": "453:127:136",
"nodeType": "YulFunctionDefinition",
"src": "453:127:136"
},
{
"body": {
"nativeSrc": "637:673:136",
"nodeType": "YulBlock",
"src": "637:673:136",
"statements": [
{
"body": {
"nativeSrc": "686:16:136",
"nodeType": "YulBlock",
"src": "686:16:136",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "695:1:136",
"nodeType": "YulLiteral",
"src": "695:1:136",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "698:1:136",
"nodeType": "YulLiteral",
"src": "698:1:136",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "688:6:136",
"nodeType": "YulIdentifier",
"src": "688:6:136"
},
"nativeSrc": "688:12:136",
"nodeType": "YulFunctionCall",
"src": "688:12:136"
},
"nativeSrc": "688:12:136",
"nodeType": "YulExpressionStatement",
"src": "688:12:136"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "offset",
"nativeSrc": "665:6:136",
"nodeType": "YulIdentifier",
"src": "665:6:136"
},
{
"kind": "number",
"nativeSrc": "673:4:136",
"nodeType": "YulLiteral",
"src": "673:4:136",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "add",
"nativeSrc": "661:3:136",
"nodeType": "YulIdentifier",
"src": "661:3:136"
},
"nativeSrc": "661:17:136",
"nodeType": "YulFunctionCall",
"src": "661:17:136"
},
{
"name": "end",
"nativeSrc": "680:3:136",
"nodeType": "YulIdentifier",
"src": "680:3:136"
}
],
"functionName": {
"name": "slt",
"nativeSrc": "657:3:136",
"nodeType": "YulIdentifier",
"src": "657:3:136"
},
"nativeSrc": "657:27:136",
"nodeType": "YulFunctionCall",
"src": "657:27:136"
}
],
"functionName": {
"name": "iszero",
"nativeSrc": "650:6:136",
"nodeType": "YulIdentifier",
"src": "650:6:136"
},
"nativeSrc": "650:35:136",
"nodeType": "YulFunctionCall",
"src": "650:35:136"
},
"nativeSrc": "647:55:136",
"nodeType": "YulIf",
"src": "647:55:136"
},
{
"nativeSrc": "711:34:136",
"nodeType": "YulVariableDeclaration",
"src": "711:34:136",
"value": {
"arguments": [
{
"name": "offset",
"nativeSrc": "738:6:136",
"nodeType": "YulIdentifier",
"src": "738:6:136"
}
],
"functionName": {
"name": "calldataload",
"nativeSrc": "725:12:136",
"nodeType": "YulIdentifier",
"src": "725:12:136"
},
"nativeSrc": "725:20:136",
"nodeType": "YulFunctionCall",
"src": "725:20:136"
},
"variables": [
{
"name": "length",
"nativeSrc": "715:6:136",
"nodeType": "YulTypedName",
"src": "715:6:136",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "788:22:136",
"nodeType": "YulBlock",
"src": "788:22:136",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nativeSrc": "790:16:136",
"nodeType": "YulIdentifier",
"src": "790:16:136"
},
"nativeSrc": "790:18:136",
"nodeType": "YulFunctionCall",
"src": "790:18:136"
},
"nativeSrc": "790:18:136",
"nodeType": "YulExpressionStatement",
"src": "790:18:136"
}
]
},