{
  "contractName": "WitnetDeployer",
  "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.25+commit.b61c2a91\"},\"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@otherplane.com>\",\"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\":\"WitnetDeployer contract used both as CREATE2 (EIP-1014) factory for Witnet artifacts, and CREATE3 (EIP-3171) factory for Witnet proxies.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/core/WitnetDeployer.sol\":\"WitnetDeployer\"},\"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/WitnetDeployer.sol\":{\"keccak256\":\"0xbaf419861fcc46079b0571b959fe7ff70df90d185334d2e14aa080737e39a49d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8288c91323438474da38b5b9b64c0c327f75e3052ee3b04c8703780ae6e8c4e\",\"dweb:/ipfs/QmT1mdehAeWh1DaRL2MuegmEh6JPrJRE1BajwdriP8v7PT\"]},\"project:/contracts/core/WitnetProxy.sol\":{\"keccak256\":\"0x2b2f56fc69bf0e01f6f1062202d1682cd394fa3b3d9ff2f8f833ab51c9e866cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8017f76a71e4a52a5a5e249081c92510bac5b91f03f727e66ff4406238521337\",\"dweb:/ipfs/QmdWcPAL3MGtxGdpX5CMfgzz4YzxYEeCiFRoGHVCr8rLEL\"]},\"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\":\"0xbeb025c71f037acb1a668174eb6930631bf397129beb825f2660e5d8cf19614f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fe6ce4dcd500093ae069d35b91829ccb471e1ca33ed0851fb053fbfe76c78aba\",\"dweb:/ipfs/QmT7huvCFS6bHDxt7HhEogJmyvYNbeb6dFTJudsVSX6nEs\"]}},\"version\":1}",
  "bytecode": "0x6080604052348015600f57600080fd5b506111df8061001f6000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80634998f038146100515780634af63f02146100805780635ba489e714610093578063d3933c29146100a6575b600080fd5b61006461005f36600461059b565b6100b9565b6040516001600160a01b03909116815260200160405180910390f35b61006461008e366004610657565b6100ca565b6100646100a136600461069c565b61015b565b6100646100b4366004610657565b61029b565b60006100c4826102f7565b92915050565b60006100d6838361029b565b9050806001600160a01b03163b6000036100c457818351602085016000f590506001600160a01b0381166100c45760405162461bcd60e51b815260206004820152602160248201527f5769746e65744465706c6f7965723a206465706c6f796d656e74206661696c656044820152601960fa1b60648201526084015b60405180910390fd5b600080610167856100b9565b9050806001600160a01b03163b600003610242576101a7856040518060200161018f9061058e565b601f1982820381018352601f909101166040526103ca565b50806001600160a01b0316636fbc15e98533866040516020016101cb929190610725565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016101f7929190610725565b6020604051808303816000875af1158015610216573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061023a9190610767565b509050610294565b60405162461bcd60e51b815260206004820152602160248201527f5769746e65744465706c6f7965723a20616c72656164792070726f78696669656044820152601960fa1b6064820152608401610152565b9392505050565b8151602092830120604080516001600160f81b0319818601523060601b6bffffffffffffffffffffffff191660218201526035810193909352605580840192909252805180840390920182526075909201909152805191012090565b604080518082018252601081526f67363d3d37363d34f03d5260086018f360801b60209182015281516001600160f81b03198183015230606090811b6bffffffffffffffffffffffff19908116602184015260358301959095527f21c35dbe1b344a2488cf3321d6ce542f8e9f305544ff09e4993a62319a497c1f605580840191909152845180840390910181526075830185528051908401206135a560f21b6095840152901b9093166097840152600160f81b60ab8401528151608c81850301815260ac909301909152815191012090565b600061029483836000806103dd846102f7565b90506001600160a01b0381163b156104375760405162461bcd60e51b815260206004820152601e60248201527f437265617465333a2074617267657420616c72656164792065786973747300006044820152606401610152565b6040805180820190915260108082526f67363d3d37363d34f03d5260086018f360801b6020830190815260009291879184f591506001600160a01b0382166104c15760405162461bcd60e51b815260206004820152601f60248201527f437265617465333a206572726f72206372656174696e6720666163746f7279006044820152606401610152565b6000826001600160a01b031685876040516104dc9190610789565b60006040518083038185875af1925050503d8060008114610519576040519150601f19603f3d011682016040523d82523d6000602084013e61051e565b606091505b5050905080801561053857506001600160a01b0384163b15155b6105845760405162461bcd60e51b815260206004820152601e60248201527f437265617465333a206572726f72206372656174696e672074617267657400006044820152606401610152565b5050509392505050565b610a04806107a683390190565b6000602082840312156105ad57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126105db57600080fd5b813567ffffffffffffffff808211156105f6576105f66105b4565b604051601f8301601f19908116603f0116810190828211818310171561061e5761061e6105b4565b8160405283815286602085880101111561063757600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561066a57600080fd5b823567ffffffffffffffff81111561068157600080fd5b61068d858286016105ca565b95602094909401359450505050565b6000806000606084860312156106b157600080fd5b8335925060208401356001600160a01b03811681146106cf57600080fd5b9150604084013567ffffffffffffffff8111156106eb57600080fd5b6106f7868287016105ca565b9150509250925092565b60005b8381101561071c578181015183820152602001610704565b50506000910152565b60018060a01b03831681526040602082015260008251806040840152610752816060850160208701610701565b601f01601f1916919091016060019392505050565b60006020828403121561077957600080fd5b8151801515811461029457600080fd5b6000825161079b818460208701610701565b919091019291505056fe6080604052348015600f57600080fd5b506109e58061001f6000396000f3fe60806040526004361061002d5760003560e01c80635c60da1b146100655780636fbc15e91461009757610034565b3661003457005b600061003e6100c7565b905060405136600082376000803683855af43d806000843e818015610061578184f35b8184fd5b34801561007157600080fd5b5061007a6100c7565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156100a357600080fd5b506100b76100b2366004610791565b6100f5565b604051901515815260200161008e565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b60006001600160a01b0383166101525760405162461bcd60e51b815260206004820181905260248201527f5769746e657450726f78793a206e756c6c20696d706c656d656e746174696f6e60448201526064015b60405180910390fd5b600061015c6100c7565b90506001600160a01b0381161561050857806001600160a01b0316846001600160a01b0316036101ce5760405162461bcd60e51b815260206004820152601f60248201527f5769746e657450726f78793a206e6f7468696e6720746f2075706772616465006044820152606401610149565b806001600160a01b0316635479d9406040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610228575060408051601f3d908101601f1916820190925261022591810190610830565b60015b6102875760405162461bcd60e51b815260206004820152602a60248201527f5769746e657450726f78793a20756e61626c6520746f20636865636b207570676044820152697261646162696c69747960b01b6064820152608401610149565b806102d45760405162461bcd60e51b815260206004820152601b60248201527f5769746e657450726f78793a206e6f742075706772616461626c6500000000006044820152606401610149565b5060405133602482015260009081906001600160a01b0384169060440160408051601f198184030181529181526020820180516001600160e01b03166335ac4b0560e11b17905251610326919061087d565b600060405180830381855af49150503d8060008114610361576040519150601f19603f3d011682016040523d82523d6000602084013e610366565b606091505b5091509150816103885760405162461bcd60e51b815260040161014990610899565b8080602001905181019061039c9190610830565b6103e85760405162461bcd60e51b815260206004820152601b60248201527f5769746e657450726f78793a206e6f7420617574686f72697a656400000000006044820152606401610149565b856001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610426573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061044a91906108e0565b836001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610488573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ac91906108e0565b146105055760405162461bcd60e51b8152602060048201526024808201527f5769746e657450726f78793a2070726f786961626c655555494473206d69736d6044820152630c2e8c6d60e31b6064820152608401610149565b50505b600080856001600160a01b0316856040516024016105269190610925565b60408051601f198184030181529181526020820180516001600160e01b031663439fab9160e01b1790525161055b919061087d565b600060405180830381855af49150503d8060008114610596576040519150601f19603f3d011682016040523d82523d6000602084013e61059b565b606091505b509150915081610635576044815110156106025760405162461bcd60e51b815260206004820152602260248201527f5769746e657450726f78793a20696e697469616c697a6174696f6e206661696c604482015261195960f21b6064820152608401610149565b6004810190508080602001905181019061061c9190610938565b60405162461bcd60e51b81526004016101499190610925565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0388169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2856001600160a01b0316635479d9406040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156106f5575060408051601f3d908101601f191682019092526106f291810190610830565b60015b6107115760405162461bcd60e51b815260040161014990610899565b935061071c92505050565b92915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561076157610761610722565b604052919050565b600067ffffffffffffffff82111561078357610783610722565b50601f01601f191660200190565b600080604083850312156107a457600080fd5b82356001600160a01b03811681146107bb57600080fd5b9150602083013567ffffffffffffffff8111156107d757600080fd5b8301601f810185136107e857600080fd5b80356107fb6107f682610769565b610738565b81815286602083850101111561081057600080fd5b816020840160208301376000602083830101528093505050509250929050565b60006020828403121561084257600080fd5b8151801515811461085257600080fd5b9392505050565b60005b8381101561087457818101518382015260200161085c565b50506000910152565b6000825161088f818460208701610859565b9190910192915050565b60208082526027908201527f5769746e657450726f78793a20756e636f6d706c69616e7420696d706c656d65604082015266373a30ba34b7b760c91b606082015260800190565b6000602082840312156108f257600080fd5b5051919050565b60008151808452610911816020860160208601610859565b601f01601f19169290920160200192915050565b60208152600061085260208301846108f9565b60006020828403121561094a57600080fd5b815167ffffffffffffffff81111561096157600080fd5b8201601f8101841361097257600080fd5b80516109806107f682610769565b81815285602083850101111561099557600080fd5b6109a6826020830160208601610859565b9594505050505056fea2646970667358221220ba4d61ba6dc6b10826f1b2f21a7fb1965aee5031bae62952c0d5d7b7c16674ab64736f6c63430008190033a2646970667358221220c2dfdf77b7842d8ea488b04bd156e9f28e73ce58949b771c7772e88b164fc10c64736f6c63430008190033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c80634998f038146100515780634af63f02146100805780635ba489e714610093578063d3933c29146100a6575b600080fd5b61006461005f36600461059b565b6100b9565b6040516001600160a01b03909116815260200160405180910390f35b61006461008e366004610657565b6100ca565b6100646100a136600461069c565b61015b565b6100646100b4366004610657565b61029b565b60006100c4826102f7565b92915050565b60006100d6838361029b565b9050806001600160a01b03163b6000036100c457818351602085016000f590506001600160a01b0381166100c45760405162461bcd60e51b815260206004820152602160248201527f5769746e65744465706c6f7965723a206465706c6f796d656e74206661696c656044820152601960fa1b60648201526084015b60405180910390fd5b600080610167856100b9565b9050806001600160a01b03163b600003610242576101a7856040518060200161018f9061058e565b601f1982820381018352601f909101166040526103ca565b50806001600160a01b0316636fbc15e98533866040516020016101cb929190610725565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016101f7929190610725565b6020604051808303816000875af1158015610216573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061023a9190610767565b509050610294565b60405162461bcd60e51b815260206004820152602160248201527f5769746e65744465706c6f7965723a20616c72656164792070726f78696669656044820152601960fa1b6064820152608401610152565b9392505050565b8151602092830120604080516001600160f81b0319818601523060601b6bffffffffffffffffffffffff191660218201526035810193909352605580840192909252805180840390920182526075909201909152805191012090565b604080518082018252601081526f67363d3d37363d34f03d5260086018f360801b60209182015281516001600160f81b03198183015230606090811b6bffffffffffffffffffffffff19908116602184015260358301959095527f21c35dbe1b344a2488cf3321d6ce542f8e9f305544ff09e4993a62319a497c1f605580840191909152845180840390910181526075830185528051908401206135a560f21b6095840152901b9093166097840152600160f81b60ab8401528151608c81850301815260ac909301909152815191012090565b600061029483836000806103dd846102f7565b90506001600160a01b0381163b156104375760405162461bcd60e51b815260206004820152601e60248201527f437265617465333a2074617267657420616c72656164792065786973747300006044820152606401610152565b6040805180820190915260108082526f67363d3d37363d34f03d5260086018f360801b6020830190815260009291879184f591506001600160a01b0382166104c15760405162461bcd60e51b815260206004820152601f60248201527f437265617465333a206572726f72206372656174696e6720666163746f7279006044820152606401610152565b6000826001600160a01b031685876040516104dc9190610789565b60006040518083038185875af1925050503d8060008114610519576040519150601f19603f3d011682016040523d82523d6000602084013e61051e565b606091505b5050905080801561053857506001600160a01b0384163b15155b6105845760405162461bcd60e51b815260206004820152601e60248201527f437265617465333a206572726f72206372656174696e672074617267657400006044820152606401610152565b5050509392505050565b610a04806107a683390190565b6000602082840312156105ad57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126105db57600080fd5b813567ffffffffffffffff808211156105f6576105f66105b4565b604051601f8301601f19908116603f0116810190828211818310171561061e5761061e6105b4565b8160405283815286602085880101111561063757600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561066a57600080fd5b823567ffffffffffffffff81111561068157600080fd5b61068d858286016105ca565b95602094909401359450505050565b6000806000606084860312156106b157600080fd5b8335925060208401356001600160a01b03811681146106cf57600080fd5b9150604084013567ffffffffffffffff8111156106eb57600080fd5b6106f7868287016105ca565b9150509250925092565b60005b8381101561071c578181015183820152602001610704565b50506000910152565b60018060a01b03831681526040602082015260008251806040840152610752816060850160208701610701565b601f01601f1916919091016060019392505050565b60006020828403121561077957600080fd5b8151801515811461029457600080fd5b6000825161079b818460208701610701565b919091019291505056fe6080604052348015600f57600080fd5b506109e58061001f6000396000f3fe60806040526004361061002d5760003560e01c80635c60da1b146100655780636fbc15e91461009757610034565b3661003457005b600061003e6100c7565b905060405136600082376000803683855af43d806000843e818015610061578184f35b8184fd5b34801561007157600080fd5b5061007a6100c7565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156100a357600080fd5b506100b76100b2366004610791565b6100f5565b604051901515815260200161008e565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b60006001600160a01b0383166101525760405162461bcd60e51b815260206004820181905260248201527f5769746e657450726f78793a206e756c6c20696d706c656d656e746174696f6e60448201526064015b60405180910390fd5b600061015c6100c7565b90506001600160a01b0381161561050857806001600160a01b0316846001600160a01b0316036101ce5760405162461bcd60e51b815260206004820152601f60248201527f5769746e657450726f78793a206e6f7468696e6720746f2075706772616465006044820152606401610149565b806001600160a01b0316635479d9406040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610228575060408051601f3d908101601f1916820190925261022591810190610830565b60015b6102875760405162461bcd60e51b815260206004820152602a60248201527f5769746e657450726f78793a20756e61626c6520746f20636865636b207570676044820152697261646162696c69747960b01b6064820152608401610149565b806102d45760405162461bcd60e51b815260206004820152601b60248201527f5769746e657450726f78793a206e6f742075706772616461626c6500000000006044820152606401610149565b5060405133602482015260009081906001600160a01b0384169060440160408051601f198184030181529181526020820180516001600160e01b03166335ac4b0560e11b17905251610326919061087d565b600060405180830381855af49150503d8060008114610361576040519150601f19603f3d011682016040523d82523d6000602084013e610366565b606091505b5091509150816103885760405162461bcd60e51b815260040161014990610899565b8080602001905181019061039c9190610830565b6103e85760405162461bcd60e51b815260206004820152601b60248201527f5769746e657450726f78793a206e6f7420617574686f72697a656400000000006044820152606401610149565b856001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610426573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061044a91906108e0565b836001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610488573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ac91906108e0565b146105055760405162461bcd60e51b8152602060048201526024808201527f5769746e657450726f78793a2070726f786961626c655555494473206d69736d6044820152630c2e8c6d60e31b6064820152608401610149565b50505b600080856001600160a01b0316856040516024016105269190610925565b60408051601f198184030181529181526020820180516001600160e01b031663439fab9160e01b1790525161055b919061087d565b600060405180830381855af49150503d8060008114610596576040519150601f19603f3d011682016040523d82523d6000602084013e61059b565b606091505b509150915081610635576044815110156106025760405162461bcd60e51b815260206004820152602260248201527f5769746e657450726f78793a20696e697469616c697a6174696f6e206661696c604482015261195960f21b6064820152608401610149565b6004810190508080602001905181019061061c9190610938565b60405162461bcd60e51b81526004016101499190610925565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0388169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2856001600160a01b0316635479d9406040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156106f5575060408051601f3d908101601f191682019092526106f291810190610830565b60015b6107115760405162461bcd60e51b815260040161014990610899565b935061071c92505050565b92915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561076157610761610722565b604052919050565b600067ffffffffffffffff82111561078357610783610722565b50601f01601f191660200190565b600080604083850312156107a457600080fd5b82356001600160a01b03811681146107bb57600080fd5b9150602083013567ffffffffffffffff8111156107d757600080fd5b8301601f810185136107e857600080fd5b80356107fb6107f682610769565b610738565b81815286602083850101111561081057600080fd5b816020840160208301376000602083830101528093505050509250929050565b60006020828403121561084257600080fd5b8151801515811461085257600080fd5b9392505050565b60005b8381101561087457818101518382015260200161085c565b50506000910152565b6000825161088f818460208701610859565b9190910192915050565b60208082526027908201527f5769746e657450726f78793a20756e636f6d706c69616e7420696d706c656d65604082015266373a30ba34b7b760c91b606082015260800190565b6000602082840312156108f257600080fd5b5051919050565b60008151808452610911816020860160208601610859565b601f01601f19169290920160200192915050565b60208152600061085260208301846108f9565b60006020828403121561094a57600080fd5b815167ffffffffffffffff81111561096157600080fd5b8201601f8101841361097257600080fd5b80516109806107f682610769565b81815285602083850101111561099557600080fd5b6109a6826020830160208601610859565b9594505050505056fea2646970667358221220ba4d61ba6dc6b10826f1b2f21a7fb1965aee5031bae62952c0d5d7b7c16674ab64736f6c63430008190033a2646970667358221220c2dfdf77b7842d8ea488b04bd156e9f28e73ce58949b771c7772e88b164fc10c64736f6c63430008190033",
  "immutableReferences": {},
  "generatedSources": [],
  "deployedGeneratedSources": [
    {
      "ast": {
        "nativeSrc": "0:7139:84",
        "nodeType": "YulBlock",
        "src": "0:7139:84",
        "statements": [
          {
            "nativeSrc": "6:3:84",
            "nodeType": "YulBlock",
            "src": "6:3:84",
            "statements": []
          },
          {
            "body": {
              "nativeSrc": "84:110:84",
              "nodeType": "YulBlock",
              "src": "84:110:84",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "130:16:84",
                    "nodeType": "YulBlock",
                    "src": "130:16:84",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "139:1:84",
                              "nodeType": "YulLiteral",
                              "src": "139:1:84",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "142:1:84",
                              "nodeType": "YulLiteral",
                              "src": "142:1:84",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "132:6:84",
                            "nodeType": "YulIdentifier",
                            "src": "132:6:84"
                          },
                          "nativeSrc": "132:12:84",
                          "nodeType": "YulFunctionCall",
                          "src": "132:12:84"
                        },
                        "nativeSrc": "132:12:84",
                        "nodeType": "YulExpressionStatement",
                        "src": "132:12:84"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "105:7:84",
                            "nodeType": "YulIdentifier",
                            "src": "105:7:84"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "114:9:84",
                            "nodeType": "YulIdentifier",
                            "src": "114:9:84"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "101:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "101:3:84"
                        },
                        "nativeSrc": "101:23:84",
                        "nodeType": "YulFunctionCall",
                        "src": "101:23:84"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "126:2:84",
                        "nodeType": "YulLiteral",
                        "src": "126:2:84",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "97:3:84",
                      "nodeType": "YulIdentifier",
                      "src": "97:3:84"
                    },
                    "nativeSrc": "97:32:84",
                    "nodeType": "YulFunctionCall",
                    "src": "97:32:84"
                  },
                  "nativeSrc": "94:52:84",
                  "nodeType": "YulIf",
                  "src": "94:52:84"
                },
                {
                  "nativeSrc": "155:33:84",
                  "nodeType": "YulAssignment",
                  "src": "155:33:84",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "178:9:84",
                        "nodeType": "YulIdentifier",
                        "src": "178:9:84"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "165:12:84",
                      "nodeType": "YulIdentifier",
                      "src": "165:12:84"
                    },
                    "nativeSrc": "165:23:84",
                    "nodeType": "YulFunctionCall",
                    "src": "165:23:84"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "155:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "155:6:84"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes32",
            "nativeSrc": "14:180:84",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "50:9:84",
                "nodeType": "YulTypedName",
                "src": "50:9:84",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "61:7:84",
                "nodeType": "YulTypedName",
                "src": "61:7:84",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "73:6:84",
                "nodeType": "YulTypedName",
                "src": "73:6:84",
                "type": ""
              }
            ],
            "src": "14:180:84"
          },
          {
            "body": {
              "nativeSrc": "300:102:84",
              "nodeType": "YulBlock",
              "src": "300:102:84",
              "statements": [
                {
                  "nativeSrc": "310:26:84",
                  "nodeType": "YulAssignment",
                  "src": "310:26:84",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "322:9:84",
                        "nodeType": "YulIdentifier",
                        "src": "322:9:84"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "333:2:84",
                        "nodeType": "YulLiteral",
                        "src": "333:2:84",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "318:3:84",
                      "nodeType": "YulIdentifier",
                      "src": "318:3:84"
                    },
                    "nativeSrc": "318:18:84",
                    "nodeType": "YulFunctionCall",
                    "src": "318:18:84"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "310:4:84",
                      "nodeType": "YulIdentifier",
                      "src": "310:4:84"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "352:9:84",
                        "nodeType": "YulIdentifier",
                        "src": "352:9:84"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nativeSrc": "367:6:84",
                            "nodeType": "YulIdentifier",
                            "src": "367:6:84"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "383:3:84",
                                    "nodeType": "YulLiteral",
                                    "src": "383:3:84",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "388:1:84",
                                    "nodeType": "YulLiteral",
                                    "src": "388:1:84",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nativeSrc": "379:3:84",
                                  "nodeType": "YulIdentifier",
                                  "src": "379:3:84"
                                },
                                "nativeSrc": "379:11:84",
                                "nodeType": "YulFunctionCall",
                                "src": "379:11:84"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "392:1:84",
                                "nodeType": "YulLiteral",
                                "src": "392:1:84",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nativeSrc": "375:3:84",
                              "nodeType": "YulIdentifier",
                              "src": "375:3:84"
                            },
                            "nativeSrc": "375:19:84",
                            "nodeType": "YulFunctionCall",
                            "src": "375:19:84"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "363:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "363:3:84"
                        },
                        "nativeSrc": "363:32:84",
                        "nodeType": "YulFunctionCall",
                        "src": "363:32:84"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "345:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "345:6:84"
                    },
                    "nativeSrc": "345:51:84",
                    "nodeType": "YulFunctionCall",
                    "src": "345:51:84"
                  },
                  "nativeSrc": "345:51:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "345:51:84"
                }
              ]
            },
            "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
            "nativeSrc": "199:203:84",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "269:9:84",
                "nodeType": "YulTypedName",
                "src": "269:9:84",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "280:6:84",
                "nodeType": "YulTypedName",
                "src": "280:6:84",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "291:4:84",
                "nodeType": "YulTypedName",
                "src": "291:4:84",
                "type": ""
              }
            ],
            "src": "199:203:84"
          },
          {
            "body": {
              "nativeSrc": "439:95:84",
              "nodeType": "YulBlock",
              "src": "439:95:84",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "456:1:84",
                        "nodeType": "YulLiteral",
                        "src": "456:1:84",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nativeSrc": "463:3:84",
                            "nodeType": "YulLiteral",
                            "src": "463:3:84",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "468:10:84",
                            "nodeType": "YulLiteral",
                            "src": "468:10:84",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nativeSrc": "459:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "459:3:84"
                        },
                        "nativeSrc": "459:20:84",
                        "nodeType": "YulFunctionCall",
                        "src": "459:20:84"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "449:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "449:6:84"
                    },
                    "nativeSrc": "449:31:84",
                    "nodeType": "YulFunctionCall",
                    "src": "449:31:84"
                  },
                  "nativeSrc": "449:31:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "449:31:84"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "496:1:84",
                        "nodeType": "YulLiteral",
                        "src": "496:1:84",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "499:4:84",
                        "nodeType": "YulLiteral",
                        "src": "499:4:84",
                        "type": "",
                        "value": "0x41"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "489:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "489:6:84"
                    },
                    "nativeSrc": "489:15:84",
                    "nodeType": "YulFunctionCall",
                    "src": "489:15:84"
                  },
                  "nativeSrc": "489:15:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "489:15:84"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "520:1:84",
                        "nodeType": "YulLiteral",
                        "src": "520:1:84",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "523:4:84",
                        "nodeType": "YulLiteral",
                        "src": "523:4:84",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nativeSrc": "513:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "513:6:84"
                    },
                    "nativeSrc": "513:15:84",
                    "nodeType": "YulFunctionCall",
                    "src": "513:15:84"
                  },
                  "nativeSrc": "513:15:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "513:15:84"
                }
              ]
            },
            "name": "panic_error_0x41",
            "nativeSrc": "407:127:84",
            "nodeType": "YulFunctionDefinition",
            "src": "407:127:84"
          },
          {
            "body": {
              "nativeSrc": "591:666:84",
              "nodeType": "YulBlock",
              "src": "591:666:84",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "640:16:84",
                    "nodeType": "YulBlock",
                    "src": "640:16:84",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "649:1:84",
                              "nodeType": "YulLiteral",
                              "src": "649:1:84",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "652:1:84",
                              "nodeType": "YulLiteral",
                              "src": "652:1:84",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "642:6:84",
                            "nodeType": "YulIdentifier",
                            "src": "642:6:84"
                          },
                          "nativeSrc": "642:12:84",
                          "nodeType": "YulFunctionCall",
                          "src": "642:12:84"
                        },
                        "nativeSrc": "642:12:84",
                        "nodeType": "YulExpressionStatement",
                        "src": "642:12:84"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nativeSrc": "619:6:84",
                                "nodeType": "YulIdentifier",
                                "src": "619:6:84"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "627:4:84",
                                "nodeType": "YulLiteral",
                                "src": "627:4:84",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "615:3:84",
                              "nodeType": "YulIdentifier",
                              "src": "615:3:84"
                            },
                            "nativeSrc": "615:17:84",
                            "nodeType": "YulFunctionCall",
                            "src": "615:17:84"
                          },
                          {
                            "name": "end",
                            "nativeSrc": "634:3:84",
                            "nodeType": "YulIdentifier",
                            "src": "634:3:84"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nativeSrc": "611:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "611:3:84"
                        },
                        "nativeSrc": "611:27:84",
                        "nodeType": "YulFunctionCall",
                        "src": "611:27:84"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "604:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "604:6:84"
                    },
                    "nativeSrc": "604:35:84",
                    "nodeType": "YulFunctionCall",
                    "src": "604:35:84"
                  },
                  "nativeSrc": "601:55:84",
                  "nodeType": "YulIf",
                  "src": "601:55:84"
                },
                {
                  "nativeSrc": "665:30:84",
                  "nodeType": "YulVariableDeclaration",
                  "src": "665:30:84",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "688:6:84",
                        "nodeType": "YulIdentifier",
                        "src": "688:6:84"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "675:12:84",
                      "nodeType": "YulIdentifier",
                      "src": "675:12:84"
                    },
                    "nativeSrc": "675:20:84",
                    "nodeType": "YulFunctionCall",
                    "src": "675:20:84"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nativeSrc": "669:2:84",
                      "nodeType": "YulTypedName",
                      "src": "669:2:84",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "704:28:84",
                  "nodeType": "YulVariableDeclaration",
                  "src": "704:28:84",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "714:18:84",
                    "nodeType": "YulLiteral",
                    "src": "714:18:84",
                    "type": "",
                    "value": "0xffffffffffffffff"
                  },
                  "variables": [
                    {
                      "name": "_2",
                      "nativeSrc": "708:2:84",
                      "nodeType": "YulTypedName",
                      "src": "708:2:84",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "755:22:84",
                    "nodeType": "YulBlock",
                    "src": "755:22:84",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nativeSrc": "757:16:84",
                            "nodeType": "YulIdentifier",
                            "src": "757:16:84"
                          },
                          "nativeSrc": "757:18:84",
                          "nodeType": "YulFunctionCall",
                          "src": "757:18:84"
                        },
                        "nativeSrc": "757:18:84",
                        "nodeType": "YulExpressionStatement",
                        "src": "757:18:84"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "_1",
                        "nativeSrc": "747:2:84",
                        "nodeType": "YulIdentifier",
                        "src": "747:2:84"
                      },
                      {
                        "name": "_2",
                        "nativeSrc": "751:2:84",
                        "nodeType": "YulIdentifier",
                        "src": "751:2:84"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "744:2:84",
                      "nodeType": "YulIdentifier",
                      "src": "744:2:84"
                    },
                    "nativeSrc": "744:10:84",
                    "nodeType": "YulFunctionCall",
                    "src": "744:10:84"
                  },
                  "nativeSrc": "741:36:84",
                  "nodeType": "YulIf",
                  "src": "741:36:84"
                },
                {
                  "nativeSrc": "786:17:84",
                  "nodeType": "YulVariableDeclaration",
                  "src": "786:17:84",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "800:2:84",
                        "nodeType": "YulLiteral",
                        "src": "800:2:84",
                        "type": "",
                        "value": "31"
                      }
                    ],
                    "functionName": {
                      "name": "not",
                      "nativeSrc": "796:3:84",
                      "nodeType": "YulIdentifier",
                      "src": "796:3:84"
                    },
                    "nativeSrc": "796:7:84",
                    "nodeType": "YulFunctionCall",
                    "src": "796:7:84"
                  },
                  "variables": [
                    {
                      "name": "_3",
                      "nativeSrc": "790:2:84",
                      "nodeType": "YulTypedName",
                      "src": "790:2:84",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "812:23:84",
                  "nodeType": "YulVariableDeclaration",
                  "src": "812:23:84",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "832:2:84",
                        "nodeType": "YulLiteral",
                        "src": "832:2:84",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nativeSrc": "826:5:84",
                      "nodeType": "YulIdentifier",
                      "src": "826:5:84"
                    },
                    "nativeSrc": "826:9:84",
                    "nodeType": "YulFunctionCall",
                    "src": "826:9:84"
                  },
                  "variables": [
                    {
                      "name": "memPtr",
                      "nativeSrc": "816:6:84",
                      "nodeType": "YulTypedName",
                      "src": "816:6:84",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "844:71:84",
                  "nodeType": "YulVariableDeclaration",
                  "src": "844:71:84",
                  "value": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nativeSrc": "866:6:84",
                        "nodeType": "YulIdentifier",
                        "src": "866:6:84"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nativeSrc": "890:2:84",
                                        "nodeType": "YulIdentifier",
                                        "src": "890:2:84"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "894:4:84",
                                        "nodeType": "YulLiteral",
                                        "src": "894:4:84",
                                        "type": "",
                                        "value": "0x1f"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "886:3:84",
                                      "nodeType": "YulIdentifier",
                                      "src": "886:3:84"
                                    },
                                    "nativeSrc": "886:13:84",
                                    "nodeType": "YulFunctionCall",
                                    "src": "886:13:84"
                                  },
                                  {
                                    "name": "_3",
                                    "nativeSrc": "901:2:84",
                                    "nodeType": "YulIdentifier",
                                    "src": "901:2:84"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nativeSrc": "882:3:84",
                                  "nodeType": "YulIdentifier",
                                  "src": "882:3:84"
                                },
                                "nativeSrc": "882:22:84",
                                "nodeType": "YulFunctionCall",
                                "src": "882:22:84"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "906:2:84",
                                "nodeType": "YulLiteral",
                                "src": "906:2:84",
                                "type": "",
                                "value": "63"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "878:3:84",
                              "nodeType": "YulIdentifier",
                              "src": "878:3:84"
                            },
                            "nativeSrc": "878:31:84",
                            "nodeType": "YulFunctionCall",
                            "src": "878:31:84"
                          },
                          {
                            "name": "_3",
                            "nativeSrc": "911:2:84",
                            "nodeType": "YulIdentifier",
                            "src": "911:2:84"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "874:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "874:3:84"
                        },
                        "nativeSrc": "874:40:84",
                        "nodeType": "YulFunctionCall",
                        "src": "874:40:84"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "862:3:84",
                      "nodeType": "YulIdentifier",
                      "src": "862:3:84"
                    },
                    "nativeSrc": "862:53:84",
                    "nodeType": "YulFunctionCall",
                    "src": "862:53:84"
                  },
                  "variables": [
                    {
                      "name": "newFreePtr",
                      "nativeSrc": "848:10:84",
                      "nodeType": "YulTypedName",
                      "src": "848:10:84",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "974:22:84",
                    "nodeType": "YulBlock",
                    "src": "974:22:84",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nativeSrc": "976:16:84",
                            "nodeType": "YulIdentifier",
                            "src": "976:16:84"
                          },
                          "nativeSrc": "976:18:84",
                          "nodeType": "YulFunctionCall",
                          "src": "976:18:84"
                        },
                        "nativeSrc": "976:18:84",
                        "nodeType": "YulExpressionStatement",
                        "src": "976:18:84"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nativeSrc": "933:10:84",
                            "nodeType": "YulIdentifier",
                            "src": "933:10:84"
                          },
                          {
                            "name": "_2",
                            "nativeSrc": "945:2:84",
                            "nodeType": "YulIdentifier",
                            "src": "945:2:84"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nativeSrc": "930:2:84",
                          "nodeType": "YulIdentifier",
                          "src": "930:2:84"
                        },
                        "nativeSrc": "930:18:84",
                        "nodeType": "YulFunctionCall",
                        "src": "930:18:84"
                      },
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nativeSrc": "953:10:84",
                            "nodeType": "YulIdentifier",
                            "src": "953:10:84"
                          },
                          {
                            "name": "memPtr",
                            "nativeSrc": "965:6:84",
                            "nodeType": "YulIdentifier",
                            "src": "965:6:84"
                          }
                        ],
                        "functionName": {
                          "name": "lt",
                          "nativeSrc": "950:2:84",
                          "nodeType": "YulIdentifier",
                          "src": "950:2:84"
                        },
                        "nativeSrc": "950:22:84",
                        "nodeType": "YulFunctionCall",
                        "src": "950:22:84"
                      }
                    ],
                    "functionName": {
                      "name": "or",
                      "nativeSrc": "927:2:84",
                      "nodeType": "YulIdentifier",
                      "src": "927:2:84"
                    },
                    "nativeSrc": "927:46:84",
                    "nodeType": "YulFunctionCall",
                    "src": "927:46:84"
                  },
                  "nativeSrc": "924:72:84",
                  "nodeType": "YulIf",
                  "src": "924:72:84"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "1012:2:84",
                        "nodeType": "YulLiteral",
                        "src": "1012:2:84",
                        "type": "",
                        "value": "64"
                      },
                      {
                        "name": "newFreePtr",
                        "nativeSrc": "1016:10:84",
                        "nodeType": "YulIdentifier",
                        "src": "1016:10:84"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "1005:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "1005:6:84"
                    },
                    "nativeSrc": "1005:22:84",
                    "nodeType": "YulFunctionCall",
                    "src": "1005:22:84"
                  },
                  "nativeSrc": "1005:22:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "1005:22:84"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nativeSrc": "1043:6:84",
                        "nodeType": "YulIdentifier",
                        "src": "1043:6:84"
                      },
                      {
                        "name": "_1",
                        "nativeSrc": "1051:2:84",
                        "nodeType": "YulIdentifier",
                        "src": "1051:2:84"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "1036:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "1036:6:84"
                    },
                    "nativeSrc": "1036:18:84",
                    "nodeType": "YulFunctionCall",
                    "src": "1036:18:84"
                  },
                  "nativeSrc": "1036:18:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "1036:18:84"
                },
                {
                  "body": {
                    "nativeSrc": "1102:16:84",
                    "nodeType": "YulBlock",
                    "src": "1102:16:84",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "1111:1:84",
                              "nodeType": "YulLiteral",
                              "src": "1111:1:84",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "1114:1:84",
                              "nodeType": "YulLiteral",
                              "src": "1114:1:84",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "1104:6:84",
                            "nodeType": "YulIdentifier",
                            "src": "1104:6:84"
                          },
                          "nativeSrc": "1104:12:84",
                          "nodeType": "YulFunctionCall",
                          "src": "1104:12:84"
                        },
                        "nativeSrc": "1104:12:84",
                        "nodeType": "YulExpressionStatement",
                        "src": "1104:12:84"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nativeSrc": "1077:6:84",
                                "nodeType": "YulIdentifier",
                                "src": "1077:6:84"
                              },
                              {
                                "name": "_1",
                                "nativeSrc": "1085:2:84",
                                "nodeType": "YulIdentifier",
                                "src": "1085:2:84"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "1073:3:84",
                              "nodeType": "YulIdentifier",
                              "src": "1073:3:84"
                            },
                            "nativeSrc": "1073:15:84",
                            "nodeType": "YulFunctionCall",
                            "src": "1073:15:84"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "1090:4:84",
                            "nodeType": "YulLiteral",
                            "src": "1090:4:84",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "1069:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "1069:3:84"
                        },
                        "nativeSrc": "1069:26:84",
                        "nodeType": "YulFunctionCall",
                        "src": "1069:26:84"
                      },
                      {
                        "name": "end",
                        "nativeSrc": "1097:3:84",
                        "nodeType": "YulIdentifier",
                        "src": "1097:3:84"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "1066:2:84",
                      "nodeType": "YulIdentifier",
                      "src": "1066:2:84"
                    },
                    "nativeSrc": "1066:35:84",
                    "nodeType": "YulFunctionCall",
                    "src": "1066:35:84"
                  },
                  "nativeSrc": "1063:55:84",
                  "nodeType": "YulIf",
                  "src": "1063:55:84"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "memPtr",
                            "nativeSrc": "1144:6:84",
                            "nodeType": "YulIdentifier",
                            "src": "1144:6:84"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "1152:4:84",
                            "nodeType": "YulLiteral",
                            "src": "1152:4:84",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "1140:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "1140:3:84"
                        },
                        "nativeSrc": "1140:17:84",
                        "nodeType": "YulFunctionCall",
                        "src": "1140:17:84"
                      },
                      {
                        "arguments": [
                          {
                            "name": "offset",
                            "nativeSrc": "1163:6:84",
                            "nodeType": "YulIdentifier",
                            "src": "1163:6:84"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "1171:4:84",
                            "nodeType": "YulLiteral",
                            "src": "1171:4:84",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "1159:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "1159:3:84"
                        },
                        "nativeSrc": "1159:17:84",
                        "nodeType": "YulFunctionCall",
                        "src": "1159:17:84"
                      },
                      {
                        "name": "_1",
                        "nativeSrc": "1178:2:84",
                        "nodeType": "YulIdentifier",
                        "src": "1178:2:84"
                      }
                    ],
                    "functionName": {
                      "name": "calldatacopy",
                      "nativeSrc": "1127:12:84",
                      "nodeType": "YulIdentifier",
                      "src": "1127:12:84"
                    },
                    "nativeSrc": "1127:54:84",
                    "nodeType": "YulFunctionCall",
                    "src": "1127:54:84"
                  },
                  "nativeSrc": "1127:54:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "1127:54:84"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "memPtr",
                                "nativeSrc": "1205:6:84",
                                "nodeType": "YulIdentifier",
                                "src": "1205:6:84"
                              },
                              {
                                "name": "_1",
                                "nativeSrc": "1213:2:84",
                                "nodeType": "YulIdentifier",
                                "src": "1213:2:84"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "1201:3:84",
                              "nodeType": "YulIdentifier",
                              "src": "1201:3:84"
                            },
                            "nativeSrc": "1201:15:84",
                            "nodeType": "YulFunctionCall",
                            "src": "1201:15:84"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "1218:4:84",
                            "nodeType": "YulLiteral",
                            "src": "1218:4:84",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "1197:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "1197:3:84"
                        },
                        "nativeSrc": "1197:26:84",
                        "nodeType": "YulFunctionCall",
                        "src": "1197:26:84"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "1225:1:84",
                        "nodeType": "YulLiteral",
                        "src": "1225:1:84",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "1190:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "1190:6:84"
                    },
                    "nativeSrc": "1190:37:84",
                    "nodeType": "YulFunctionCall",
                    "src": "1190:37:84"
                  },
                  "nativeSrc": "1190:37:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "1190:37:84"
                },
                {
                  "nativeSrc": "1236:15:84",
                  "nodeType": "YulAssignment",
                  "src": "1236:15:84",
                  "value": {
                    "name": "memPtr",
                    "nativeSrc": "1245:6:84",
                    "nodeType": "YulIdentifier",
                    "src": "1245:6:84"
                  },
                  "variableNames": [
                    {
                      "name": "array",
                      "nativeSrc": "1236:5:84",
                      "nodeType": "YulIdentifier",
                      "src": "1236:5:84"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_bytes",
            "nativeSrc": "539:718:84",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nativeSrc": "565:6:84",
                "nodeType": "YulTypedName",
                "src": "565:6:84",
                "type": ""
              },
              {
                "name": "end",
                "nativeSrc": "573:3:84",
                "nodeType": "YulTypedName",
                "src": "573:3:84",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "array",
                "nativeSrc": "581:5:84",
                "nodeType": "YulTypedName",
                "src": "581:5:84",
                "type": ""
              }
            ],
            "src": "539:718:84"
          },
          {
            "body": {
              "nativeSrc": "1358:292:84",
              "nodeType": "YulBlock",
              "src": "1358:292:84",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "1404:16:84",
                    "nodeType": "YulBlock",
                    "src": "1404:16:84",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "1413:1:84",
                              "nodeType": "YulLiteral",
                              "src": "1413:1:84",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "1416:1:84",
                              "nodeType": "YulLiteral",
                              "src": "1416:1:84",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "1406:6:84",
                            "nodeType": "YulIdentifier",
                            "src": "1406:6:84"
                          },
                          "nativeSrc": "1406:12:84",
                          "nodeType": "YulFunctionCall",
                          "src": "1406:12:84"
                        },
                        "nativeSrc": "1406:12:84",
                        "nodeType": "YulExpressionStatement",
                        "src": "1406:12:84"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "1379:7:84",
                            "nodeType": "YulIdentifier",
                            "src": "1379:7:84"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "1388:9:84",
                            "nodeType": "YulIdentifier",
                            "src": "1388:9:84"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "1375:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "1375:3:84"
                        },
                        "nativeSrc": "1375:23:84",
                        "nodeType": "YulFunctionCall",
                        "src": "1375:23:84"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "1400:2:84",
                        "nodeType": "YulLiteral",
                        "src": "1400:2:84",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "1371:3:84",
                      "nodeType": "YulIdentifier",
                      "src": "1371:3:84"
                    },
                    "nativeSrc": "1371:32:84",
                    "nodeType": "YulFunctionCall",
                    "src": "1371:32:84"
                  },
                  "nativeSrc": "1368:52:84",
                  "nodeType": "YulIf",
                  "src": "1368:52:84"
                },
                {
                  "nativeSrc": "1429:37:84",
                  "nodeType": "YulVariableDeclaration",
                  "src": "1429:37:84",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "1456:9:84",
                        "nodeType": "YulIdentifier",
                        "src": "1456:9:84"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "1443:12:84",
                      "nodeType": "YulIdentifier",
                      "src": "1443:12:84"
                    },
                    "nativeSrc": "1443:23:84",
                    "nodeType": "YulFunctionCall",
                    "src": "1443:23:84"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nativeSrc": "1433:6:84",
                      "nodeType": "YulTypedName",
                      "src": "1433:6:84",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "1509:16:84",
                    "nodeType": "YulBlock",
                    "src": "1509:16:84",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "1518:1:84",
                              "nodeType": "YulLiteral",
                              "src": "1518:1:84",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "1521:1:84",
                              "nodeType": "YulLiteral",
                              "src": "1521:1:84",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "1511:6:84",
                            "nodeType": "YulIdentifier",
                            "src": "1511:6:84"
                          },
                          "nativeSrc": "1511:12:84",
                          "nodeType": "YulFunctionCall",
                          "src": "1511:12:84"
                        },
                        "nativeSrc": "1511:12:84",
                        "nodeType": "YulExpressionStatement",
                        "src": "1511:12:84"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "1481:6:84",
                        "nodeType": "YulIdentifier",
                        "src": "1481:6:84"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "1489:18:84",
                        "nodeType": "YulLiteral",
                        "src": "1489:18:84",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "1478:2:84",
                      "nodeType": "YulIdentifier",
                      "src": "1478:2:84"
                    },
                    "nativeSrc": "1478:30:84",
                    "nodeType": "YulFunctionCall",
                    "src": "1478:30:84"
                  },
                  "nativeSrc": "1475:50:84",
                  "nodeType": "YulIf",
                  "src": "1475:50:84"
                },
                {
                  "nativeSrc": "1534:59:84",
                  "nodeType": "YulAssignment",
                  "src": "1534:59:84",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "1565:9:84",
                            "nodeType": "YulIdentifier",
                            "src": "1565:9:84"
                          },
                          {
                            "name": "offset",
                            "nativeSrc": "1576:6:84",
                            "nodeType": "YulIdentifier",
                            "src": "1576:6:84"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "1561:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "1561:3:84"
                        },
                        "nativeSrc": "1561:22:84",
                        "nodeType": "YulFunctionCall",
                        "src": "1561:22:84"
                      },
                      {
                        "name": "dataEnd",
                        "nativeSrc": "1585:7:84",
                        "nodeType": "YulIdentifier",
                        "src": "1585:7:84"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nativeSrc": "1544:16:84",
                      "nodeType": "YulIdentifier",
                      "src": "1544:16:84"
                    },
                    "nativeSrc": "1544:49:84",
                    "nodeType": "YulFunctionCall",
                    "src": "1544:49:84"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "1534:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "1534:6:84"
                    }
                  ]
                },
                {
                  "nativeSrc": "1602:42:84",
                  "nodeType": "YulAssignment",
                  "src": "1602:42:84",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "1629:9:84",
                            "nodeType": "YulIdentifier",
                            "src": "1629:9:84"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "1640:2:84",
                            "nodeType": "YulLiteral",
                            "src": "1640:2:84",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "1625:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "1625:3:84"
                        },
                        "nativeSrc": "1625:18:84",
                        "nodeType": "YulFunctionCall",
                        "src": "1625:18:84"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "1612:12:84",
                      "nodeType": "YulIdentifier",
                      "src": "1612:12:84"
                    },
                    "nativeSrc": "1612:32:84",
                    "nodeType": "YulFunctionCall",
                    "src": "1612:32:84"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nativeSrc": "1602:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "1602:6:84"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes_memory_ptrt_bytes32",
            "nativeSrc": "1262:388:84",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "1316:9:84",
                "nodeType": "YulTypedName",
                "src": "1316:9:84",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "1327:7:84",
                "nodeType": "YulTypedName",
                "src": "1327:7:84",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "1339:6:84",
                "nodeType": "YulTypedName",
                "src": "1339:6:84",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "1347:6:84",
                "nodeType": "YulTypedName",
                "src": "1347:6:84",
                "type": ""
              }
            ],
            "src": "1262:388:84"
          },
          {
            "body": {
              "nativeSrc": "1768:449:84",
              "nodeType": "YulBlock",
              "src": "1768:449:84",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "1814:16:84",
                    "nodeType": "YulBlock",
                    "src": "1814:16:84",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "1823:1:84",
                              "nodeType": "YulLiteral",
                              "src": "1823:1:84",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "1826:1:84",
                              "nodeType": "YulLiteral",
                              "src": "1826:1:84",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "1816:6:84",
                            "nodeType": "YulIdentifier",
                            "src": "1816:6:84"
                          },
                          "nativeSrc": "1816:12:84",
                          "nodeType": "YulFunctionCall",
                          "src": "1816:12:84"
                        },
                        "nativeSrc": "1816:12:84",
                        "nodeType": "YulExpressionStatement",
                        "src": "1816:12:84"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "1789:7:84",
                            "nodeType": "YulIdentifier",
                            "src": "1789:7:84"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "1798:9:84",
                            "nodeType": "YulIdentifier",
                            "src": "1798:9:84"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "1785:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "1785:3:84"
                        },
                        "nativeSrc": "1785:23:84",
                        "nodeType": "YulFunctionCall",
                        "src": "1785:23:84"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "1810:2:84",
                        "nodeType": "YulLiteral",
                        "src": "1810:2:84",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "1781:3:84",
                      "nodeType": "YulIdentifier",
                      "src": "1781:3:84"
                    },
                    "nativeSrc": "1781:32:84",
                    "nodeType": "YulFunctionCall",
                    "src": "1781:32:84"
                  },
                  "nativeSrc": "1778:52:84",
                  "nodeType": "YulIf",
                  "src": "1778:52:84"
                },
                {
                  "nativeSrc": "1839:33:84",
                  "nodeType": "YulAssignment",
                  "src": "1839:33:84",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "1862:9:84",
                        "nodeType": "YulIdentifier",
                        "src": "1862:9:84"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "1849:12:84",
                      "nodeType": "YulIdentifier",
                      "src": "1849:12:84"
                    },
                    "nativeSrc": "1849:23:84",
                    "nodeType": "YulFunctionCall",
                    "src": "1849:23:84"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "1839:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "1839:6:84"
                    }
                  ]
                },
                {
                  "nativeSrc": "1881:45:84",
                  "nodeType": "YulVariableDeclaration",
                  "src": "1881:45:84",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "1911:9:84",
                            "nodeType": "YulIdentifier",
                            "src": "1911:9:84"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "1922:2:84",
                            "nodeType": "YulLiteral",
                            "src": "1922:2:84",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "1907:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "1907:3:84"
                        },
                        "nativeSrc": "1907:18:84",
                        "nodeType": "YulFunctionCall",
                        "src": "1907:18:84"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "1894:12:84",
                      "nodeType": "YulIdentifier",
                      "src": "1894:12:84"
                    },
                    "nativeSrc": "1894:32:84",
                    "nodeType": "YulFunctionCall",
                    "src": "1894:32:84"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nativeSrc": "1885:5:84",
                      "nodeType": "YulTypedName",
                      "src": "1885:5:84",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "1989:16:84",
                    "nodeType": "YulBlock",
                    "src": "1989:16:84",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "1998:1:84",
                              "nodeType": "YulLiteral",
                              "src": "1998:1:84",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "2001:1:84",
                              "nodeType": "YulLiteral",
                              "src": "2001:1:84",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "1991:6:84",
                            "nodeType": "YulIdentifier",
                            "src": "1991:6:84"
                          },
                          "nativeSrc": "1991:12:84",
                          "nodeType": "YulFunctionCall",
                          "src": "1991:12:84"
                        },
                        "nativeSrc": "1991:12:84",
                        "nodeType": "YulExpressionStatement",
                        "src": "1991:12:84"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nativeSrc": "1948:5:84",
                            "nodeType": "YulIdentifier",
                            "src": "1948:5:84"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nativeSrc": "1959:5:84",
                                "nodeType": "YulIdentifier",
                                "src": "1959:5:84"
                              },
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nativeSrc": "1974:3:84",
                                        "nodeType": "YulLiteral",
                                        "src": "1974:3:84",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "1979:1:84",
                                        "nodeType": "YulLiteral",
                                        "src": "1979:1:84",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nativeSrc": "1970:3:84",
                                      "nodeType": "YulIdentifier",
                                      "src": "1970:3:84"
                                    },
                                    "nativeSrc": "1970:11:84",
                                    "nodeType": "YulFunctionCall",
                                    "src": "1970:11:84"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "1983:1:84",
                                    "nodeType": "YulLiteral",
                                    "src": "1983:1:84",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nativeSrc": "1966:3:84",
                                  "nodeType": "YulIdentifier",
                                  "src": "1966:3:84"
                                },
                                "nativeSrc": "1966:19:84",
                                "nodeType": "YulFunctionCall",
                                "src": "1966:19:84"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nativeSrc": "1955:3:84",
                              "nodeType": "YulIdentifier",
                              "src": "1955:3:84"
                            },
                            "nativeSrc": "1955:31:84",
                            "nodeType": "YulFunctionCall",
                            "src": "1955:31:84"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nativeSrc": "1945:2:84",
                          "nodeType": "YulIdentifier",
                          "src": "1945:2:84"
                        },
                        "nativeSrc": "1945:42:84",
                        "nodeType": "YulFunctionCall",
                        "src": "1945:42:84"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "1938:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "1938:6:84"
                    },
                    "nativeSrc": "1938:50:84",
                    "nodeType": "YulFunctionCall",
                    "src": "1938:50:84"
                  },
                  "nativeSrc": "1935:70:84",
                  "nodeType": "YulIf",
                  "src": "1935:70:84"
                },
                {
                  "nativeSrc": "2014:15:84",
                  "nodeType": "YulAssignment",
                  "src": "2014:15:84",
                  "value": {
                    "name": "value",
                    "nativeSrc": "2024:5:84",
                    "nodeType": "YulIdentifier",
                    "src": "2024:5:84"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nativeSrc": "2014:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "2014:6:84"
                    }
                  ]
                },
                {
                  "nativeSrc": "2038:46:84",
                  "nodeType": "YulVariableDeclaration",
                  "src": "2038:46:84",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "2069:9:84",
                            "nodeType": "YulIdentifier",
                            "src": "2069:9:84"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "2080:2:84",
                            "nodeType": "YulLiteral",
                            "src": "2080:2:84",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "2065:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "2065:3:84"
                        },
                        "nativeSrc": "2065:18:84",
                        "nodeType": "YulFunctionCall",
                        "src": "2065:18:84"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "2052:12:84",
                      "nodeType": "YulIdentifier",
                      "src": "2052:12:84"
                    },
                    "nativeSrc": "2052:32:84",
                    "nodeType": "YulFunctionCall",
                    "src": "2052:32:84"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nativeSrc": "2042:6:84",
                      "nodeType": "YulTypedName",
                      "src": "2042:6:84",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "2127:16:84",
                    "nodeType": "YulBlock",
                    "src": "2127:16:84",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "2136:1:84",
                              "nodeType": "YulLiteral",
                              "src": "2136:1:84",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "2139:1:84",
                              "nodeType": "YulLiteral",
                              "src": "2139:1:84",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "2129:6:84",
                            "nodeType": "YulIdentifier",
                            "src": "2129:6:84"
                          },
                          "nativeSrc": "2129:12:84",
                          "nodeType": "YulFunctionCall",
                          "src": "2129:12:84"
                        },
                        "nativeSrc": "2129:12:84",
                        "nodeType": "YulExpressionStatement",
                        "src": "2129:12:84"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "2099:6:84",
                        "nodeType": "YulIdentifier",
                        "src": "2099:6:84"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "2107:18:84",
                        "nodeType": "YulLiteral",
                        "src": "2107:18:84",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "2096:2:84",
                      "nodeType": "YulIdentifier",
                      "src": "2096:2:84"
                    },
                    "nativeSrc": "2096:30:84",
                    "nodeType": "YulFunctionCall",
                    "src": "2096:30:84"
                  },
                  "nativeSrc": "2093:50:84",
                  "nodeType": "YulIf",
                  "src": "2093:50:84"
                },
                {
                  "nativeSrc": "2152:59:84",
                  "nodeType": "YulAssignment",
                  "src": "2152:59:84",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "2183:9:84",
                            "nodeType": "YulIdentifier",
                            "src": "2183:9:84"
                          },
                          {
                            "name": "offset",
                            "nativeSrc": "2194:6:84",
                            "nodeType": "YulIdentifier",
                            "src": "2194:6:84"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "2179:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "2179:3:84"
                        },
                        "nativeSrc": "2179:22:84",
                        "nodeType": "YulFunctionCall",
                        "src": "2179:22:84"
                      },
                      {
                        "name": "dataEnd",
                        "nativeSrc": "2203:7:84",
                        "nodeType": "YulIdentifier",
                        "src": "2203:7:84"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nativeSrc": "2162:16:84",
                      "nodeType": "YulIdentifier",
                      "src": "2162:16:84"
                    },
                    "nativeSrc": "2162:49:84",
                    "nodeType": "YulFunctionCall",
                    "src": "2162:49:84"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nativeSrc": "2152:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "2152:6:84"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes32t_addresst_bytes_memory_ptr",
            "nativeSrc": "1655:562:84",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "1718:9:84",
                "nodeType": "YulTypedName",
                "src": "1718:9:84",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "1729:7:84",
                "nodeType": "YulTypedName",
                "src": "1729:7:84",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "1741:6:84",
                "nodeType": "YulTypedName",
                "src": "1741:6:84",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "1749:6:84",
                "nodeType": "YulTypedName",
                "src": "1749:6:84",
                "type": ""
              },
              {
                "name": "value2",
                "nativeSrc": "1757:6:84",
                "nodeType": "YulTypedName",
                "src": "1757:6:84",
                "type": ""
              }
            ],
            "src": "1655:562:84"
          },
          {
            "body": {
              "nativeSrc": "2351:102:84",
              "nodeType": "YulBlock",
              "src": "2351:102:84",
              "statements": [
                {
                  "nativeSrc": "2361:26:84",
                  "nodeType": "YulAssignment",
                  "src": "2361:26:84",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "2373:9:84",
                        "nodeType": "YulIdentifier",
                        "src": "2373:9:84"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "2384:2:84",
                        "nodeType": "YulLiteral",
                        "src": "2384:2:84",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "2369:3:84",
                      "nodeType": "YulIdentifier",
                      "src": "2369:3:84"
                    },
                    "nativeSrc": "2369:18:84",
                    "nodeType": "YulFunctionCall",
                    "src": "2369:18:84"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "2361:4:84",
                      "nodeType": "YulIdentifier",
                      "src": "2361:4:84"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "2403:9:84",
                        "nodeType": "YulIdentifier",
                        "src": "2403:9:84"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nativeSrc": "2418:6:84",
                            "nodeType": "YulIdentifier",
                            "src": "2418:6:84"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "2434:3:84",
                                    "nodeType": "YulLiteral",
                                    "src": "2434:3:84",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "2439:1:84",
                                    "nodeType": "YulLiteral",
                                    "src": "2439:1:84",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nativeSrc": "2430:3:84",
                                  "nodeType": "YulIdentifier",
                                  "src": "2430:3:84"
                                },
                                "nativeSrc": "2430:11:84",
                                "nodeType": "YulFunctionCall",
                                "src": "2430:11:84"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "2443:1:84",
                                "nodeType": "YulLiteral",
                                "src": "2443:1:84",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nativeSrc": "2426:3:84",
                              "nodeType": "YulIdentifier",
                              "src": "2426:3:84"
                            },
                            "nativeSrc": "2426:19:84",
                            "nodeType": "YulFunctionCall",
                            "src": "2426:19:84"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "2414:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "2414:3:84"
                        },
                        "nativeSrc": "2414:32:84",
                        "nodeType": "YulFunctionCall",
                        "src": "2414:32:84"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "2396:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "2396:6:84"
                    },
                    "nativeSrc": "2396:51:84",
                    "nodeType": "YulFunctionCall",
                    "src": "2396:51:84"
                  },
                  "nativeSrc": "2396:51:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "2396:51:84"
                }
              ]
            },
            "name": "abi_encode_tuple_t_contract$_WitnetProxy_$3700__to_t_address_payable__fromStack_reversed",
            "nativeSrc": "2222:231:84",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "2320:9:84",
                "nodeType": "YulTypedName",
                "src": "2320:9:84",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "2331:6:84",
                "nodeType": "YulTypedName",
                "src": "2331:6:84",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "2342:4:84",
                "nodeType": "YulTypedName",
                "src": "2342:4:84",
                "type": ""
              }
            ],
            "src": "2222:231:84"
          },
          {
            "body": {
              "nativeSrc": "2632:223:84",
              "nodeType": "YulBlock",
              "src": "2632:223:84",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "2649:9:84",
                        "nodeType": "YulIdentifier",
                        "src": "2649:9:84"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "2660:2:84",
                        "nodeType": "YulLiteral",
                        "src": "2660:2:84",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "2642:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "2642:6:84"
                    },
                    "nativeSrc": "2642:21:84",
                    "nodeType": "YulFunctionCall",
                    "src": "2642:21:84"
                  },
                  "nativeSrc": "2642:21:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "2642:21:84"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "2683:9:84",
                            "nodeType": "YulIdentifier",
                            "src": "2683:9:84"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "2694:2:84",
                            "nodeType": "YulLiteral",
                            "src": "2694:2:84",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "2679:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "2679:3:84"
                        },
                        "nativeSrc": "2679:18:84",
                        "nodeType": "YulFunctionCall",
                        "src": "2679:18:84"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "2699:2:84",
                        "nodeType": "YulLiteral",
                        "src": "2699:2:84",
                        "type": "",
                        "value": "33"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "2672:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "2672:6:84"
                    },
                    "nativeSrc": "2672:30:84",
                    "nodeType": "YulFunctionCall",
                    "src": "2672:30:84"
                  },
                  "nativeSrc": "2672:30:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "2672:30:84"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "2722:9:84",
                            "nodeType": "YulIdentifier",
                            "src": "2722:9:84"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "2733:2:84",
                            "nodeType": "YulLiteral",
                            "src": "2733:2:84",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "2718:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "2718:3:84"
                        },
                        "nativeSrc": "2718:18:84",
                        "nodeType": "YulFunctionCall",
                        "src": "2718:18:84"
                      },
                      {
                        "hexValue": "5769746e65744465706c6f7965723a206465706c6f796d656e74206661696c65",
                        "kind": "string",
                        "nativeSrc": "2738:34:84",
                        "nodeType": "YulLiteral",
                        "src": "2738:34:84",
                        "type": "",
                        "value": "WitnetDeployer: deployment faile"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "2711:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "2711:6:84"
                    },
                    "nativeSrc": "2711:62:84",
                    "nodeType": "YulFunctionCall",
                    "src": "2711:62:84"
                  },
                  "nativeSrc": "2711:62:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "2711:62:84"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "2793:9:84",
                            "nodeType": "YulIdentifier",
                            "src": "2793:9:84"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "2804:2:84",
                            "nodeType": "YulLiteral",
                            "src": "2804:2:84",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "2789:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "2789:3:84"
                        },
                        "nativeSrc": "2789:18:84",
                        "nodeType": "YulFunctionCall",
                        "src": "2789:18:84"
                      },
                      {
                        "hexValue": "64",
                        "kind": "string",
                        "nativeSrc": "2809:3:84",
                        "nodeType": "YulLiteral",
                        "src": "2809:3:84",
                        "type": "",
                        "value": "d"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "2782:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "2782:6:84"
                    },
                    "nativeSrc": "2782:31:84",
                    "nodeType": "YulFunctionCall",
                    "src": "2782:31:84"
                  },
                  "nativeSrc": "2782:31:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "2782:31:84"
                },
                {
                  "nativeSrc": "2822:27:84",
                  "nodeType": "YulAssignment",
                  "src": "2822:27:84",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "2834:9:84",
                        "nodeType": "YulIdentifier",
                        "src": "2834:9:84"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "2845:3:84",
                        "nodeType": "YulLiteral",
                        "src": "2845:3:84",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "2830:3:84",
                      "nodeType": "YulIdentifier",
                      "src": "2830:3:84"
                    },
                    "nativeSrc": "2830:19:84",
                    "nodeType": "YulFunctionCall",
                    "src": "2830:19:84"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "2822:4:84",
                      "nodeType": "YulIdentifier",
                      "src": "2822:4:84"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_a449f037473e66c93f74665b4547dc6279e787cd06aefbab4d74a9c55d42a13f__to_t_string_memory_ptr__fromStack_reversed",
            "nativeSrc": "2458:397:84",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "2609:9:84",
                "nodeType": "YulTypedName",
                "src": "2609:9:84",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "2623:4:84",
                "nodeType": "YulTypedName",
                "src": "2623:4:84",
                "type": ""
              }
            ],
            "src": "2458:397:84"
          },
          {
            "body": {
              "nativeSrc": "2926:184:84",
              "nodeType": "YulBlock",
              "src": "2926:184:84",
              "statements": [
                {
                  "nativeSrc": "2936:10:84",
                  "nodeType": "YulVariableDeclaration",
                  "src": "2936:10:84",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "2945:1:84",
                    "nodeType": "YulLiteral",
                    "src": "2945:1:84",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "i",
                      "nativeSrc": "2940:1:84",
                      "nodeType": "YulTypedName",
                      "src": "2940:1:84",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "3005:63:84",
                    "nodeType": "YulBlock",
                    "src": "3005:63:84",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "dst",
                                  "nativeSrc": "3030:3:84",
                                  "nodeType": "YulIdentifier",
                                  "src": "3030:3:84"
                                },
                                {
                                  "name": "i",
                                  "nativeSrc": "3035:1:84",
                                  "nodeType": "YulIdentifier",
                                  "src": "3035:1:84"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nativeSrc": "3026:3:84",
                                "nodeType": "YulIdentifier",
                                "src": "3026:3:84"
                              },
                              "nativeSrc": "3026:11:84",
                              "nodeType": "YulFunctionCall",
                              "src": "3026:11:84"
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "src",
                                      "nativeSrc": "3049:3:84",
                                      "nodeType": "YulIdentifier",
                                      "src": "3049:3:84"
                                    },
                                    {
                                      "name": "i",
                                      "nativeSrc": "3054:1:84",
                                      "nodeType": "YulIdentifier",
                                      "src": "3054:1:84"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nativeSrc": "3045:3:84",
                                    "nodeType": "YulIdentifier",
                                    "src": "3045:3:84"
                                  },
                                  "nativeSrc": "3045:11:84",
                                  "nodeType": "YulFunctionCall",
                                  "src": "3045:11:84"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nativeSrc": "3039:5:84",
                                "nodeType": "YulIdentifier",
                                "src": "3039:5:84"
                              },
                              "nativeSrc": "3039:18:84",
                              "nodeType": "YulFunctionCall",
                              "src": "3039:18:84"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nativeSrc": "3019:6:84",
                            "nodeType": "YulIdentifier",
                            "src": "3019:6:84"
                          },
                          "nativeSrc": "3019:39:84",
                          "nodeType": "YulFunctionCall",
                          "src": "3019:39:84"
                        },
                        "nativeSrc": "3019:39:84",
                        "nodeType": "YulExpressionStatement",
                        "src": "3019:39:84"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nativeSrc": "2966:1:84",
                        "nodeType": "YulIdentifier",
                        "src": "2966:1:84"
                      },
                      {
                        "name": "length",
                        "nativeSrc": "2969:6:84",
                        "nodeType": "YulIdentifier",
                        "src": "2969:6:84"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nativeSrc": "2963:2:84",
                      "nodeType": "YulIdentifier",
                      "src": "2963:2:84"
                    },
                    "nativeSrc": "2963:13:84",
                    "nodeType": "YulFunctionCall",
                    "src": "2963:13:84"
                  },
                  "nativeSrc": "2955:113:84",
                  "nodeType": "YulForLoop",
                  "post": {
                    "nativeSrc": "2977:19:84",
                    "nodeType": "YulBlock",
                    "src": "2977:19:84",
                    "statements": [
                      {
                        "nativeSrc": "2979:15:84",
                        "nodeType": "YulAssignment",
                        "src": "2979:15:84",
                        "value": {
                          "arguments": [
                            {
                              "name": "i",
                              "nativeSrc": "2988:1:84",
                              "nodeType": "YulIdentifier",
                              "src": "2988:1:84"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "2991:2:84",
                              "nodeType": "YulLiteral",
                              "src": "2991:2:84",
                              "type": "",
                              "value": "32"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nativeSrc": "2984:3:84",
                            "nodeType": "YulIdentifier",
                            "src": "2984:3:84"
                          },
                          "nativeSrc": "2984:10:84",
                          "nodeType": "YulFunctionCall",
                          "src": "2984:10:84"
                        },
                        "variableNames": [
                          {
                            "name": "i",
                            "nativeSrc": "2979:1:84",
                            "nodeType": "YulIdentifier",
                            "src": "2979:1:84"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nativeSrc": "2959:3:84",
                    "nodeType": "YulBlock",
                    "src": "2959:3:84",
                    "statements": []
                  },
                  "src": "2955:113:84"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dst",
                            "nativeSrc": "3088:3:84",
                            "nodeType": "YulIdentifier",
                            "src": "3088:3:84"
                          },
                          {
                            "name": "length",
                            "nativeSrc": "3093:6:84",
                            "nodeType": "YulIdentifier",
                            "src": "3093:6:84"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "3084:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "3084:3:84"
                        },
                        "nativeSrc": "3084:16:84",
                        "nodeType": "YulFunctionCall",
                        "src": "3084:16:84"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "3102:1:84",
                        "nodeType": "YulLiteral",
                        "src": "3102:1:84",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "3077:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "3077:6:84"
                    },
                    "nativeSrc": "3077:27:84",
                    "nodeType": "YulFunctionCall",
                    "src": "3077:27:84"
                  },
                  "nativeSrc": "3077:27:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "3077:27:84"
                }
              ]
            },
            "name": "copy_memory_to_memory_with_cleanup",
            "nativeSrc": "2860:250:84",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "src",
                "nativeSrc": "2904:3:84",
                "nodeType": "YulTypedName",
                "src": "2904:3:84",
                "type": ""
              },
              {
                "name": "dst",
                "nativeSrc": "2909:3:84",
                "nodeType": "YulTypedName",
                "src": "2909:3:84",
                "type": ""
              },
              {
                "name": "length",
                "nativeSrc": "2914:6:84",
                "nodeType": "YulTypedName",
                "src": "2914:6:84",
                "type": ""
              }
            ],
            "src": "2860:250:84"
          },
          {
            "body": {
              "nativeSrc": "3262:344:84",
              "nodeType": "YulBlock",
              "src": "3262:344:84",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "3279:9:84",
                        "nodeType": "YulIdentifier",
                        "src": "3279:9:84"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nativeSrc": "3294:6:84",
                            "nodeType": "YulIdentifier",
                            "src": "3294:6:84"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "3310:3:84",
                                    "nodeType": "YulLiteral",
                                    "src": "3310:3:84",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "3315:1:84",
                                    "nodeType": "YulLiteral",
                                    "src": "3315:1:84",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nativeSrc": "3306:3:84",
                                  "nodeType": "YulIdentifier",
                                  "src": "3306:3:84"
                                },
                                "nativeSrc": "3306:11:84",
                                "nodeType": "YulFunctionCall",
                                "src": "3306:11:84"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "3319:1:84",
                                "nodeType": "YulLiteral",
                                "src": "3319:1:84",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nativeSrc": "3302:3:84",
                              "nodeType": "YulIdentifier",
                              "src": "3302:3:84"
                            },
                            "nativeSrc": "3302:19:84",
                            "nodeType": "YulFunctionCall",
                            "src": "3302:19:84"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "3290:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "3290:3:84"
                        },
                        "nativeSrc": "3290:32:84",
                        "nodeType": "YulFunctionCall",
                        "src": "3290:32:84"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "3272:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "3272:6:84"
                    },
                    "nativeSrc": "3272:51:84",
                    "nodeType": "YulFunctionCall",
                    "src": "3272:51:84"
                  },
                  "nativeSrc": "3272:51:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "3272:51:84"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "3343:9:84",
                            "nodeType": "YulIdentifier",
                            "src": "3343:9:84"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "3354:2:84",
                            "nodeType": "YulLiteral",
                            "src": "3354:2:84",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "3339:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "3339:3:84"
                        },
                        "nativeSrc": "3339:18:84",
                        "nodeType": "YulFunctionCall",
                        "src": "3339:18:84"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "3359:2:84",
                        "nodeType": "YulLiteral",
                        "src": "3359:2:84",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "3332:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "3332:6:84"
                    },
                    "nativeSrc": "3332:30:84",
                    "nodeType": "YulFunctionCall",
                    "src": "3332:30:84"
                  },
                  "nativeSrc": "3332:30:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "3332:30:84"
                },
                {
                  "nativeSrc": "3371:27:84",
                  "nodeType": "YulVariableDeclaration",
                  "src": "3371:27:84",
                  "value": {
                    "arguments": [
                      {
                        "name": "value1",
                        "nativeSrc": "3391:6:84",
                        "nodeType": "YulIdentifier",
                        "src": "3391:6:84"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nativeSrc": "3385:5:84",
                      "nodeType": "YulIdentifier",
                      "src": "3385:5:84"
                    },
                    "nativeSrc": "3385:13:84",
                    "nodeType": "YulFunctionCall",
                    "src": "3385:13:84"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nativeSrc": "3375:6:84",
                      "nodeType": "YulTypedName",
                      "src": "3375:6:84",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "3418:9:84",
                            "nodeType": "YulIdentifier",
                            "src": "3418:9:84"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "3429:2:84",
                            "nodeType": "YulLiteral",
                            "src": "3429:2:84",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "3414:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "3414:3:84"
                        },
                        "nativeSrc": "3414:18:84",
                        "nodeType": "YulFunctionCall",
                        "src": "3414:18:84"
                      },
                      {
                        "name": "length",
                        "nativeSrc": "3434:6:84",
                        "nodeType": "YulIdentifier",
                        "src": "3434:6:84"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "3407:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "3407:6:84"
                    },
                    "nativeSrc": "3407:34:84",
                    "nodeType": "YulFunctionCall",
                    "src": "3407:34:84"
                  },
                  "nativeSrc": "3407:34:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "3407:34:84"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value1",
                            "nativeSrc": "3489:6:84",
                            "nodeType": "YulIdentifier",
                            "src": "3489:6:84"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "3497:2:84",
                            "nodeType": "YulLiteral",
                            "src": "3497:2:84",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "3485:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "3485:3:84"
                        },
                        "nativeSrc": "3485:15:84",
                        "nodeType": "YulFunctionCall",
                        "src": "3485:15:84"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "3506:9:84",
                            "nodeType": "YulIdentifier",
                            "src": "3506:9:84"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "3517:2:84",
                            "nodeType": "YulLiteral",
                            "src": "3517:2:84",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "3502:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "3502:3:84"
                        },
                        "nativeSrc": "3502:18:84",
                        "nodeType": "YulFunctionCall",
                        "src": "3502:18:84"
                      },
                      {
                        "name": "length",
                        "nativeSrc": "3522:6:84",
                        "nodeType": "YulIdentifier",
                        "src": "3522:6:84"
                      }
                    ],
                    "functionName": {
                      "name": "copy_memory_to_memory_with_cleanup",
                      "nativeSrc": "3450:34:84",
                      "nodeType": "YulIdentifier",
                      "src": "3450:34:84"
                    },
                    "nativeSrc": "3450:79:84",
                    "nodeType": "YulFunctionCall",
                    "src": "3450:79:84"
                  },
                  "nativeSrc": "3450:79:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "3450:79:84"
                },
                {
                  "nativeSrc": "3538:62:84",
                  "nodeType": "YulAssignment",
                  "src": "3538:62:84",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "3554:9:84",
                            "nodeType": "YulIdentifier",
                            "src": "3554:9:84"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nativeSrc": "3573:6:84",
                                    "nodeType": "YulIdentifier",
                                    "src": "3573:6:84"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "3581:2:84",
                                    "nodeType": "YulLiteral",
                                    "src": "3581:2:84",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nativeSrc": "3569:3:84",
                                  "nodeType": "YulIdentifier",
                                  "src": "3569:3:84"
                                },
                                "nativeSrc": "3569:15:84",
                                "nodeType": "YulFunctionCall",
                                "src": "3569:15:84"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "3590:2:84",
                                    "nodeType": "YulLiteral",
                                    "src": "3590:2:84",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nativeSrc": "3586:3:84",
                                  "nodeType": "YulIdentifier",
                                  "src": "3586:3:84"
                                },
                                "nativeSrc": "3586:7:84",
                                "nodeType": "YulFunctionCall",
                                "src": "3586:7:84"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nativeSrc": "3565:3:84",
                              "nodeType": "YulIdentifier",
                              "src": "3565:3:84"
                            },
                            "nativeSrc": "3565:29:84",
                            "nodeType": "YulFunctionCall",
                            "src": "3565:29:84"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "3550:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "3550:3:84"
                        },
                        "nativeSrc": "3550:45:84",
                        "nodeType": "YulFunctionCall",
                        "src": "3550:45:84"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "3597:2:84",
                        "nodeType": "YulLiteral",
                        "src": "3597:2:84",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "3546:3:84",
                      "nodeType": "YulIdentifier",
                      "src": "3546:3:84"
                    },
                    "nativeSrc": "3546:54:84",
                    "nodeType": "YulFunctionCall",
                    "src": "3546:54:84"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "3538:4:84",
                      "nodeType": "YulIdentifier",
                      "src": "3538:4:84"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed",
            "nativeSrc": "3115:491:84",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "3223:9:84",
                "nodeType": "YulTypedName",
                "src": "3223:9:84",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "3234:6:84",
                "nodeType": "YulTypedName",
                "src": "3234:6:84",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "3242:6:84",
                "nodeType": "YulTypedName",
                "src": "3242:6:84",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "3253:4:84",
                "nodeType": "YulTypedName",
                "src": "3253:4:84",
                "type": ""
              }
            ],
            "src": "3115:491:84"
          },
          {
            "body": {
              "nativeSrc": "3689:199:84",
              "nodeType": "YulBlock",
              "src": "3689:199:84",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "3735:16:84",
                    "nodeType": "YulBlock",
                    "src": "3735:16:84",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "3744:1:84",
                              "nodeType": "YulLiteral",
                              "src": "3744:1:84",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "3747:1:84",
                              "nodeType": "YulLiteral",
                              "src": "3747:1:84",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "3737:6:84",
                            "nodeType": "YulIdentifier",
                            "src": "3737:6:84"
                          },
                          "nativeSrc": "3737:12:84",
                          "nodeType": "YulFunctionCall",
                          "src": "3737:12:84"
                        },
                        "nativeSrc": "3737:12:84",
                        "nodeType": "YulExpressionStatement",
                        "src": "3737:12:84"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "3710:7:84",
                            "nodeType": "YulIdentifier",
                            "src": "3710:7:84"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "3719:9:84",
                            "nodeType": "YulIdentifier",
                            "src": "3719:9:84"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "3706:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "3706:3:84"
                        },
                        "nativeSrc": "3706:23:84",
                        "nodeType": "YulFunctionCall",
                        "src": "3706:23:84"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "3731:2:84",
                        "nodeType": "YulLiteral",
                        "src": "3731:2:84",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "3702:3:84",
                      "nodeType": "YulIdentifier",
                      "src": "3702:3:84"
                    },
                    "nativeSrc": "3702:32:84",
                    "nodeType": "YulFunctionCall",
                    "src": "3702:32:84"
                  },
                  "nativeSrc": "3699:52:84",
                  "nodeType": "YulIf",
                  "src": "3699:52:84"
                },
                {
                  "nativeSrc": "3760:29:84",
                  "nodeType": "YulVariableDeclaration",
                  "src": "3760:29:84",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "3779:9:84",
                        "nodeType": "YulIdentifier",
                        "src": "3779:9:84"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nativeSrc": "3773:5:84",
                      "nodeType": "YulIdentifier",
                      "src": "3773:5:84"
                    },
                    "nativeSrc": "3773:16:84",
                    "nodeType": "YulFunctionCall",
                    "src": "3773:16:84"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nativeSrc": "3764:5:84",
                      "nodeType": "YulTypedName",
                      "src": "3764:5:84",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "3842:16:84",
                    "nodeType": "YulBlock",
                    "src": "3842:16:84",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "3851:1:84",
                              "nodeType": "YulLiteral",
                              "src": "3851:1:84",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "3854:1:84",
                              "nodeType": "YulLiteral",
                              "src": "3854:1:84",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "3844:6:84",
                            "nodeType": "YulIdentifier",
                            "src": "3844:6:84"
                          },
                          "nativeSrc": "3844:12:84",
                          "nodeType": "YulFunctionCall",
                          "src": "3844:12:84"
                        },
                        "nativeSrc": "3844:12:84",
                        "nodeType": "YulExpressionStatement",
                        "src": "3844:12:84"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nativeSrc": "3811:5:84",
                            "nodeType": "YulIdentifier",
                            "src": "3811:5:84"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nativeSrc": "3832:5:84",
                                    "nodeType": "YulIdentifier",
                                    "src": "3832:5:84"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nativeSrc": "3825:6:84",
                                  "nodeType": "YulIdentifier",
                                  "src": "3825:6:84"
                                },
                                "nativeSrc": "3825:13:84",
                                "nodeType": "YulFunctionCall",
                                "src": "3825:13:84"
                              }
                            ],
                            "functionName": {
                              "name": "iszero",
                              "nativeSrc": "3818:6:84",
                              "nodeType": "YulIdentifier",
                              "src": "3818:6:84"
                            },
                            "nativeSrc": "3818:21:84",
                            "nodeType": "YulFunctionCall",
                            "src": "3818:21:84"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nativeSrc": "3808:2:84",
                          "nodeType": "YulIdentifier",
                          "src": "3808:2:84"
                        },
                        "nativeSrc": "3808:32:84",
                        "nodeType": "YulFunctionCall",
                        "src": "3808:32:84"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "3801:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "3801:6:84"
                    },
                    "nativeSrc": "3801:40:84",
                    "nodeType": "YulFunctionCall",
                    "src": "3801:40:84"
                  },
                  "nativeSrc": "3798:60:84",
                  "nodeType": "YulIf",
                  "src": "3798:60:84"
                },
                {
                  "nativeSrc": "3867:15:84",
                  "nodeType": "YulAssignment",
                  "src": "3867:15:84",
                  "value": {
                    "name": "value",
                    "nativeSrc": "3877:5:84",
                    "nodeType": "YulIdentifier",
                    "src": "3877:5:84"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "3867:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "3867:6:84"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bool_fromMemory",
            "nativeSrc": "3611:277:84",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "3655:9:84",
                "nodeType": "YulTypedName",
                "src": "3655:9:84",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "3666:7:84",
                "nodeType": "YulTypedName",
                "src": "3666:7:84",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "3678:6:84",
                "nodeType": "YulTypedName",
                "src": "3678:6:84",
                "type": ""
              }
            ],
            "src": "3611:277:84"
          },
          {
            "body": {
              "nativeSrc": "4067:223:84",
              "nodeType": "YulBlock",
              "src": "4067:223:84",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "4084:9:84",
                        "nodeType": "YulIdentifier",
                        "src": "4084:9:84"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "4095:2:84",
                        "nodeType": "YulLiteral",
                        "src": "4095:2:84",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "4077:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "4077:6:84"
                    },
                    "nativeSrc": "4077:21:84",
                    "nodeType": "YulFunctionCall",
                    "src": "4077:21:84"
                  },
                  "nativeSrc": "4077:21:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "4077:21:84"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "4118:9:84",
                            "nodeType": "YulIdentifier",
                            "src": "4118:9:84"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "4129:2:84",
                            "nodeType": "YulLiteral",
                            "src": "4129:2:84",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "4114:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "4114:3:84"
                        },
                        "nativeSrc": "4114:18:84",
                        "nodeType": "YulFunctionCall",
                        "src": "4114:18:84"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "4134:2:84",
                        "nodeType": "YulLiteral",
                        "src": "4134:2:84",
                        "type": "",
                        "value": "33"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "4107:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "4107:6:84"
                    },
                    "nativeSrc": "4107:30:84",
                    "nodeType": "YulFunctionCall",
                    "src": "4107:30:84"
                  },
                  "nativeSrc": "4107:30:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "4107:30:84"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "4157:9:84",
                            "nodeType": "YulIdentifier",
                            "src": "4157:9:84"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "4168:2:84",
                            "nodeType": "YulLiteral",
                            "src": "4168:2:84",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "4153:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "4153:3:84"
                        },
                        "nativeSrc": "4153:18:84",
                        "nodeType": "YulFunctionCall",
                        "src": "4153:18:84"
                      },
                      {
                        "hexValue": "5769746e65744465706c6f7965723a20616c72656164792070726f7869666965",
                        "kind": "string",
                        "nativeSrc": "4173:34:84",
                        "nodeType": "YulLiteral",
                        "src": "4173:34:84",
                        "type": "",
                        "value": "WitnetDeployer: already proxifie"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "4146:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "4146:6:84"
                    },
                    "nativeSrc": "4146:62:84",
                    "nodeType": "YulFunctionCall",
                    "src": "4146:62:84"
                  },
                  "nativeSrc": "4146:62:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "4146:62:84"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "4228:9:84",
                            "nodeType": "YulIdentifier",
                            "src": "4228:9:84"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "4239:2:84",
                            "nodeType": "YulLiteral",
                            "src": "4239:2:84",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "4224:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "4224:3:84"
                        },
                        "nativeSrc": "4224:18:84",
                        "nodeType": "YulFunctionCall",
                        "src": "4224:18:84"
                      },
                      {
                        "hexValue": "64",
                        "kind": "string",
                        "nativeSrc": "4244:3:84",
                        "nodeType": "YulLiteral",
                        "src": "4244:3:84",
                        "type": "",
                        "value": "d"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "4217:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "4217:6:84"
                    },
                    "nativeSrc": "4217:31:84",
                    "nodeType": "YulFunctionCall",
                    "src": "4217:31:84"
                  },
                  "nativeSrc": "4217:31:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "4217:31:84"
                },
                {
                  "nativeSrc": "4257:27:84",
                  "nodeType": "YulAssignment",
                  "src": "4257:27:84",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "4269:9:84",
                        "nodeType": "YulIdentifier",
                        "src": "4269:9:84"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "4280:3:84",
                        "nodeType": "YulLiteral",
                        "src": "4280:3:84",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "4265:3:84",
                      "nodeType": "YulIdentifier",
                      "src": "4265:3:84"
                    },
                    "nativeSrc": "4265:19:84",
                    "nodeType": "YulFunctionCall",
                    "src": "4265:19:84"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "4257:4:84",
                      "nodeType": "YulIdentifier",
                      "src": "4257:4:84"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_07010c659982893c2bfaa9066955408f5c67d963251677f65ceecaf6871b6734__to_t_string_memory_ptr__fromStack_reversed",
            "nativeSrc": "3893:397:84",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "4044:9:84",
                "nodeType": "YulTypedName",
                "src": "4044:9:84",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "4058:4:84",
                "nodeType": "YulTypedName",
                "src": "4058:4:84",
                "type": ""
              }
            ],
            "src": "3893:397:84"
          },
          {
            "body": {
              "nativeSrc": "4496:240:84",
              "nodeType": "YulBlock",
              "src": "4496:240:84",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nativeSrc": "4513:3:84",
                        "nodeType": "YulIdentifier",
                        "src": "4513:3:84"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nativeSrc": "4522:6:84",
                            "nodeType": "YulIdentifier",
                            "src": "4522:6:84"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "4534:3:84",
                                "nodeType": "YulLiteral",
                                "src": "4534:3:84",
                                "type": "",
                                "value": "248"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "4539:3:84",
                                "nodeType": "YulLiteral",
                                "src": "4539:3:84",
                                "type": "",
                                "value": "255"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nativeSrc": "4530:3:84",
                              "nodeType": "YulIdentifier",
                              "src": "4530:3:84"
                            },
                            "nativeSrc": "4530:13:84",
                            "nodeType": "YulFunctionCall",
                            "src": "4530:13:84"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "4518:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "4518:3:84"
                        },
                        "nativeSrc": "4518:26:84",
                        "nodeType": "YulFunctionCall",
                        "src": "4518:26:84"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "4506:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "4506:6:84"
                    },
                    "nativeSrc": "4506:39:84",
                    "nodeType": "YulFunctionCall",
                    "src": "4506:39:84"
                  },
                  "nativeSrc": "4506:39:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "4506:39:84"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nativeSrc": "4565:3:84",
                            "nodeType": "YulIdentifier",
                            "src": "4565:3:84"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "4570:1:84",
                            "nodeType": "YulLiteral",
                            "src": "4570:1:84",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "4561:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "4561:3:84"
                        },
                        "nativeSrc": "4561:11:84",
                        "nodeType": "YulFunctionCall",
                        "src": "4561:11:84"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "4582:2:84",
                                "nodeType": "YulLiteral",
                                "src": "4582:2:84",
                                "type": "",
                                "value": "96"
                              },
                              {
                                "name": "value1",
                                "nativeSrc": "4586:6:84",
                                "nodeType": "YulIdentifier",
                                "src": "4586:6:84"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nativeSrc": "4578:3:84",
                              "nodeType": "YulIdentifier",
                              "src": "4578:3:84"
                            },
                            "nativeSrc": "4578:15:84",
                            "nodeType": "YulFunctionCall",
                            "src": "4578:15:84"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "4599:26:84",
                                "nodeType": "YulLiteral",
                                "src": "4599:26:84",
                                "type": "",
                                "value": "0xffffffffffffffffffffffff"
                              }
                            ],
                            "functionName": {
                              "name": "not",
                              "nativeSrc": "4595:3:84",
                              "nodeType": "YulIdentifier",
                              "src": "4595:3:84"
                            },
                            "nativeSrc": "4595:31:84",
                            "nodeType": "YulFunctionCall",
                            "src": "4595:31:84"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "4574:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "4574:3:84"
                        },
                        "nativeSrc": "4574:53:84",
                        "nodeType": "YulFunctionCall",
                        "src": "4574:53:84"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "4554:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "4554:6:84"
                    },
                    "nativeSrc": "4554:74:84",
                    "nodeType": "YulFunctionCall",
                    "src": "4554:74:84"
                  },
                  "nativeSrc": "4554:74:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "4554:74:84"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nativeSrc": "4648:3:84",
                            "nodeType": "YulIdentifier",
                            "src": "4648:3:84"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "4653:2:84",
                            "nodeType": "YulLiteral",
                            "src": "4653:2:84",
                            "type": "",
                            "value": "21"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "4644:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "4644:3:84"
                        },
                        "nativeSrc": "4644:12:84",
                        "nodeType": "YulFunctionCall",
                        "src": "4644:12:84"
                      },
                      {
                        "name": "value2",
                        "nativeSrc": "4658:6:84",
                        "nodeType": "YulIdentifier",
                        "src": "4658:6:84"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "4637:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "4637:6:84"
                    },
                    "nativeSrc": "4637:28:84",
                    "nodeType": "YulFunctionCall",
                    "src": "4637:28:84"
                  },
                  "nativeSrc": "4637:28:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "4637:28:84"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nativeSrc": "4685:3:84",
                            "nodeType": "YulIdentifier",
                            "src": "4685:3:84"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "4690:2:84",
                            "nodeType": "YulLiteral",
                            "src": "4690:2:84",
                            "type": "",
                            "value": "53"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "4681:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "4681:3:84"
                        },
                        "nativeSrc": "4681:12:84",
                        "nodeType": "YulFunctionCall",
                        "src": "4681:12:84"
                      },
                      {
                        "name": "value3",
                        "nativeSrc": "4695:6:84",
                        "nodeType": "YulIdentifier",
                        "src": "4695:6:84"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "4674:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "4674:6:84"
                    },
                    "nativeSrc": "4674:28:84",
                    "nodeType": "YulFunctionCall",
                    "src": "4674:28:84"
                  },
                  "nativeSrc": "4674:28:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "4674:28:84"
                },
                {
                  "nativeSrc": "4711:19:84",
                  "nodeType": "YulAssignment",
                  "src": "4711:19:84",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nativeSrc": "4722:3:84",
                        "nodeType": "YulIdentifier",
                        "src": "4722:3:84"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "4727:2:84",
                        "nodeType": "YulLiteral",
                        "src": "4727:2:84",
                        "type": "",
                        "value": "85"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "4718:3:84",
                      "nodeType": "YulIdentifier",
                      "src": "4718:3:84"
                    },
                    "nativeSrc": "4718:12:84",
                    "nodeType": "YulFunctionCall",
                    "src": "4718:12:84"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nativeSrc": "4711:3:84",
                      "nodeType": "YulIdentifier",
                      "src": "4711:3:84"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_packed_t_bytes1_t_address_t_bytes32_t_bytes32__to_t_bytes1_t_address_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed",
            "nativeSrc": "4295:441:84",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nativeSrc": "4448:3:84",
                "nodeType": "YulTypedName",
                "src": "4448:3:84",
                "type": ""
              },
              {
                "name": "value3",
                "nativeSrc": "4453:6:84",
                "nodeType": "YulTypedName",
                "src": "4453:6:84",
                "type": ""
              },
              {
                "name": "value2",
                "nativeSrc": "4461:6:84",
                "nodeType": "YulTypedName",
                "src": "4461:6:84",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "4469:6:84",
                "nodeType": "YulTypedName",
                "src": "4469:6:84",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "4477:6:84",
                "nodeType": "YulTypedName",
                "src": "4477:6:84",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nativeSrc": "4488:3:84",
                "nodeType": "YulTypedName",
                "src": "4488:3:84",
                "type": ""
              }
            ],
            "src": "4295:441:84"
          },
          {
            "body": {
              "nativeSrc": "5017:227:84",
              "nodeType": "YulBlock",
              "src": "5017:227:84",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nativeSrc": "5034:3:84",
                        "nodeType": "YulIdentifier",
                        "src": "5034:3:84"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nativeSrc": "5043:3:84",
                            "nodeType": "YulLiteral",
                            "src": "5043:3:84",
                            "type": "",
                            "value": "248"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "5048:3:84",
                            "nodeType": "YulLiteral",
                            "src": "5048:3:84",
                            "type": "",
                            "value": "255"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nativeSrc": "5039:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "5039:3:84"
                        },
                        "nativeSrc": "5039:13:84",
                        "nodeType": "YulFunctionCall",
                        "src": "5039:13:84"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "5027:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "5027:6:84"
                    },
                    "nativeSrc": "5027:26:84",
                    "nodeType": "YulFunctionCall",
                    "src": "5027:26:84"
                  },
                  "nativeSrc": "5027:26:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "5027:26:84"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nativeSrc": "5073:3:84",
                            "nodeType": "YulIdentifier",
                            "src": "5073:3:84"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "5078:1:84",
                            "nodeType": "YulLiteral",
                            "src": "5078:1:84",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "5069:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "5069:3:84"
                        },
                        "nativeSrc": "5069:11:84",
                        "nodeType": "YulFunctionCall",
                        "src": "5069:11:84"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "5090:2:84",
                                "nodeType": "YulLiteral",
                                "src": "5090:2:84",
                                "type": "",
                                "value": "96"
                              },
                              {
                                "name": "value0",
                                "nativeSrc": "5094:6:84",
                                "nodeType": "YulIdentifier",
                                "src": "5094:6:84"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nativeSrc": "5086:3:84",
                              "nodeType": "YulIdentifier",
                              "src": "5086:3:84"
                            },
                            "nativeSrc": "5086:15:84",
                            "nodeType": "YulFunctionCall",
                            "src": "5086:15:84"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "5107:26:84",
                                "nodeType": "YulLiteral",
                                "src": "5107:26:84",
                                "type": "",
                                "value": "0xffffffffffffffffffffffff"
                              }
                            ],
                            "functionName": {
                              "name": "not",
                              "nativeSrc": "5103:3:84",
                              "nodeType": "YulIdentifier",
                              "src": "5103:3:84"
                            },
                            "nativeSrc": "5103:31:84",
                            "nodeType": "YulFunctionCall",
                            "src": "5103:31:84"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "5082:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "5082:3:84"
                        },
                        "nativeSrc": "5082:53:84",
                        "nodeType": "YulFunctionCall",
                        "src": "5082:53:84"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "5062:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "5062:6:84"
                    },
                    "nativeSrc": "5062:74:84",
                    "nodeType": "YulFunctionCall",
                    "src": "5062:74:84"
                  },
                  "nativeSrc": "5062:74:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "5062:74:84"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nativeSrc": "5156:3:84",
                            "nodeType": "YulIdentifier",
                            "src": "5156:3:84"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "5161:2:84",
                            "nodeType": "YulLiteral",
                            "src": "5161:2:84",
                            "type": "",
                            "value": "21"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "5152:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "5152:3:84"
                        },
                        "nativeSrc": "5152:12:84",
                        "nodeType": "YulFunctionCall",
                        "src": "5152:12:84"
                      },
                      {
                        "name": "value1",
                        "nativeSrc": "5166:6:84",
                        "nodeType": "YulIdentifier",
                        "src": "5166:6:84"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "5145:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "5145:6:84"
                    },
                    "nativeSrc": "5145:28:84",
                    "nodeType": "YulFunctionCall",
                    "src": "5145:28:84"
                  },
                  "nativeSrc": "5145:28:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "5145:28:84"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nativeSrc": "5193:3:84",
                            "nodeType": "YulIdentifier",
                            "src": "5193:3:84"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "5198:2:84",
                            "nodeType": "YulLiteral",
                            "src": "5198:2:84",
                            "type": "",
                            "value": "53"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "5189:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "5189:3:84"
                        },
                        "nativeSrc": "5189:12:84",
                        "nodeType": "YulFunctionCall",
                        "src": "5189:12:84"
                      },
                      {
                        "name": "value2",
                        "nativeSrc": "5203:6:84",
                        "nodeType": "YulIdentifier",
                        "src": "5203:6:84"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "5182:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "5182:6:84"
                    },
                    "nativeSrc": "5182:28:84",
                    "nodeType": "YulFunctionCall",
                    "src": "5182:28:84"
                  },
                  "nativeSrc": "5182:28:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "5182:28:84"
                },
                {
                  "nativeSrc": "5219:19:84",
                  "nodeType": "YulAssignment",
                  "src": "5219:19:84",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nativeSrc": "5230:3:84",
                        "nodeType": "YulIdentifier",
                        "src": "5230:3:84"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "5235:2:84",
                        "nodeType": "YulLiteral",
                        "src": "5235:2:84",
                        "type": "",
                        "value": "85"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "5226:3:84",
                      "nodeType": "YulIdentifier",
                      "src": "5226:3:84"
                    },
                    "nativeSrc": "5226:12:84",
                    "nodeType": "YulFunctionCall",
                    "src": "5226:12:84"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nativeSrc": "5219:3:84",
                      "nodeType": "YulIdentifier",
                      "src": "5219:3:84"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_packed_t_stringliteral_8b1a944cf13a9a1c08facb2c9e98623ef3254d2ddb48113885c3e8e97fec8db9_t_address_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_address_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed",
            "nativeSrc": "4741:503:84",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nativeSrc": "4977:3:84",
                "nodeType": "YulTypedName",
                "src": "4977:3:84",
                "type": ""
              },
              {
                "name": "value2",
                "nativeSrc": "4982:6:84",
                "nodeType": "YulTypedName",
                "src": "4982:6:84",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "4990:6:84",
                "nodeType": "YulTypedName",
                "src": "4990:6:84",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "4998:6:84",
                "nodeType": "YulTypedName",
                "src": "4998:6:84",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nativeSrc": "5009:3:84",
                "nodeType": "YulTypedName",
                "src": "5009:3:84",
                "type": ""
              }
            ],
            "src": "4741:503:84"
          },
          {
            "body": {
              "nativeSrc": "5570:197:84",
              "nodeType": "YulBlock",
              "src": "5570:197:84",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nativeSrc": "5587:3:84",
                        "nodeType": "YulIdentifier",
                        "src": "5587:3:84"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nativeSrc": "5596:3:84",
                            "nodeType": "YulLiteral",
                            "src": "5596:3:84",
                            "type": "",
                            "value": "242"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "5601:5:84",
                            "nodeType": "YulLiteral",
                            "src": "5601:5:84",
                            "type": "",
                            "value": "13733"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nativeSrc": "5592:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "5592:3:84"
                        },
                        "nativeSrc": "5592:15:84",
                        "nodeType": "YulFunctionCall",
                        "src": "5592:15:84"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "5580:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "5580:6:84"
                    },
                    "nativeSrc": "5580:28:84",
                    "nodeType": "YulFunctionCall",
                    "src": "5580:28:84"
                  },
                  "nativeSrc": "5580:28:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "5580:28:84"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nativeSrc": "5628:3:84",
                            "nodeType": "YulIdentifier",
                            "src": "5628:3:84"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "5633:1:84",
                            "nodeType": "YulLiteral",
                            "src": "5633:1:84",
                            "type": "",
                            "value": "2"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "5624:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "5624:3:84"
                        },
                        "nativeSrc": "5624:11:84",
                        "nodeType": "YulFunctionCall",
                        "src": "5624:11:84"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "5645:2:84",
                                "nodeType": "YulLiteral",
                                "src": "5645:2:84",
                                "type": "",
                                "value": "96"
                              },
                              {
                                "name": "value0",
                                "nativeSrc": "5649:6:84",
                                "nodeType": "YulIdentifier",
                                "src": "5649:6:84"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nativeSrc": "5641:3:84",
                              "nodeType": "YulIdentifier",
                              "src": "5641:3:84"
                            },
                            "nativeSrc": "5641:15:84",
                            "nodeType": "YulFunctionCall",
                            "src": "5641:15:84"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "5662:26:84",
                                "nodeType": "YulLiteral",
                                "src": "5662:26:84",
                                "type": "",
                                "value": "0xffffffffffffffffffffffff"
                              }
                            ],
                            "functionName": {
                              "name": "not",
                              "nativeSrc": "5658:3:84",
                              "nodeType": "YulIdentifier",
                              "src": "5658:3:84"
                            },
                            "nativeSrc": "5658:31:84",
                            "nodeType": "YulFunctionCall",
                            "src": "5658:31:84"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "5637:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "5637:3:84"
                        },
                        "nativeSrc": "5637:53:84",
                        "nodeType": "YulFunctionCall",
                        "src": "5637:53:84"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "5617:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "5617:6:84"
                    },
                    "nativeSrc": "5617:74:84",
                    "nodeType": "YulFunctionCall",
                    "src": "5617:74:84"
                  },
                  "nativeSrc": "5617:74:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "5617:74:84"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nativeSrc": "5711:3:84",
                            "nodeType": "YulIdentifier",
                            "src": "5711:3:84"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "5716:2:84",
                            "nodeType": "YulLiteral",
                            "src": "5716:2:84",
                            "type": "",
                            "value": "22"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "5707:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "5707:3:84"
                        },
                        "nativeSrc": "5707:12:84",
                        "nodeType": "YulFunctionCall",
                        "src": "5707:12:84"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nativeSrc": "5725:3:84",
                            "nodeType": "YulLiteral",
                            "src": "5725:3:84",
                            "type": "",
                            "value": "248"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "5730:1:84",
                            "nodeType": "YulLiteral",
                            "src": "5730:1:84",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nativeSrc": "5721:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "5721:3:84"
                        },
                        "nativeSrc": "5721:11:84",
                        "nodeType": "YulFunctionCall",
                        "src": "5721:11:84"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "5700:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "5700:6:84"
                    },
                    "nativeSrc": "5700:33:84",
                    "nodeType": "YulFunctionCall",
                    "src": "5700:33:84"
                  },
                  "nativeSrc": "5700:33:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "5700:33:84"
                },
                {
                  "nativeSrc": "5742:19:84",
                  "nodeType": "YulAssignment",
                  "src": "5742:19:84",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nativeSrc": "5753:3:84",
                        "nodeType": "YulIdentifier",
                        "src": "5753:3:84"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "5758:2:84",
                        "nodeType": "YulLiteral",
                        "src": "5758:2:84",
                        "type": "",
                        "value": "23"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "5749:3:84",
                      "nodeType": "YulIdentifier",
                      "src": "5749:3:84"
                    },
                    "nativeSrc": "5749:12:84",
                    "nodeType": "YulFunctionCall",
                    "src": "5749:12:84"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nativeSrc": "5742:3:84",
                      "nodeType": "YulIdentifier",
                      "src": "5742:3:84"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_packed_t_stringliteral_4fdc04d28c8d22070e5fd0f23f00bae0b21cc4e5091b5fd7a9cad9babd3668cf_t_address_t_stringliteral_5fe7f977e71dba2ea1a68e21057beebb9be2ac30c6410aa38d4f3fbe41dcffd2__to_t_string_memory_ptr_t_address_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
            "nativeSrc": "5249:518:84",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nativeSrc": "5546:3:84",
                "nodeType": "YulTypedName",
                "src": "5546:3:84",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "5551:6:84",
                "nodeType": "YulTypedName",
                "src": "5551:6:84",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nativeSrc": "5562:3:84",
                "nodeType": "YulTypedName",
                "src": "5562:3:84",
                "type": ""
              }
            ],
            "src": "5249:518:84"
          },
          {
            "body": {
              "nativeSrc": "5946:180:84",
              "nodeType": "YulBlock",
              "src": "5946:180:84",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "5963:9:84",
                        "nodeType": "YulIdentifier",
                        "src": "5963:9:84"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "5974:2:84",
                        "nodeType": "YulLiteral",
                        "src": "5974:2:84",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "5956:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "5956:6:84"
                    },
                    "nativeSrc": "5956:21:84",
                    "nodeType": "YulFunctionCall",
                    "src": "5956:21:84"
                  },
                  "nativeSrc": "5956:21:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "5956:21:84"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "5997:9:84",
                            "nodeType": "YulIdentifier",
                            "src": "5997:9:84"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "6008:2:84",
                            "nodeType": "YulLiteral",
                            "src": "6008:2:84",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "5993:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "5993:3:84"
                        },
                        "nativeSrc": "5993:18:84",
                        "nodeType": "YulFunctionCall",
                        "src": "5993:18:84"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "6013:2:84",
                        "nodeType": "YulLiteral",
                        "src": "6013:2:84",
                        "type": "",
                        "value": "30"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "5986:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "5986:6:84"
                    },
                    "nativeSrc": "5986:30:84",
                    "nodeType": "YulFunctionCall",
                    "src": "5986:30:84"
                  },
                  "nativeSrc": "5986:30:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "5986:30:84"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "6036:9:84",
                            "nodeType": "YulIdentifier",
                            "src": "6036:9:84"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "6047:2:84",
                            "nodeType": "YulLiteral",
                            "src": "6047:2:84",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "6032:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "6032:3:84"
                        },
                        "nativeSrc": "6032:18:84",
                        "nodeType": "YulFunctionCall",
                        "src": "6032:18:84"
                      },
                      {
                        "hexValue": "437265617465333a2074617267657420616c726561647920657869737473",
                        "kind": "string",
                        "nativeSrc": "6052:32:84",
                        "nodeType": "YulLiteral",
                        "src": "6052:32:84",
                        "type": "",
                        "value": "Create3: target already exists"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "6025:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "6025:6:84"
                    },
                    "nativeSrc": "6025:60:84",
                    "nodeType": "YulFunctionCall",
                    "src": "6025:60:84"
                  },
                  "nativeSrc": "6025:60:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "6025:60:84"
                },
                {
                  "nativeSrc": "6094:26:84",
                  "nodeType": "YulAssignment",
                  "src": "6094:26:84",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "6106:9:84",
                        "nodeType": "YulIdentifier",
                        "src": "6106:9:84"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "6117:2:84",
                        "nodeType": "YulLiteral",
                        "src": "6117:2:84",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "6102:3:84",
                      "nodeType": "YulIdentifier",
                      "src": "6102:3:84"
                    },
                    "nativeSrc": "6102:18:84",
                    "nodeType": "YulFunctionCall",
                    "src": "6102:18:84"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "6094:4:84",
                      "nodeType": "YulIdentifier",
                      "src": "6094:4:84"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_eff5890756d2c5621f001169bb16c941329db031eba2edbb4865370c160b3eae__to_t_string_memory_ptr__fromStack_reversed",
            "nativeSrc": "5772:354:84",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "5923:9:84",
                "nodeType": "YulTypedName",
                "src": "5923:9:84",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "5937:4:84",
                "nodeType": "YulTypedName",
                "src": "5937:4:84",
                "type": ""
              }
            ],
            "src": "5772:354:84"
          },
          {
            "body": {
              "nativeSrc": "6305:181:84",
              "nodeType": "YulBlock",
              "src": "6305:181:84",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "6322:9:84",
                        "nodeType": "YulIdentifier",
                        "src": "6322:9:84"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "6333:2:84",
                        "nodeType": "YulLiteral",
                        "src": "6333:2:84",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "6315:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "6315:6:84"
                    },
                    "nativeSrc": "6315:21:84",
                    "nodeType": "YulFunctionCall",
                    "src": "6315:21:84"
                  },
                  "nativeSrc": "6315:21:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "6315:21:84"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "6356:9:84",
                            "nodeType": "YulIdentifier",
                            "src": "6356:9:84"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "6367:2:84",
                            "nodeType": "YulLiteral",
                            "src": "6367:2:84",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "6352:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "6352:3:84"
                        },
                        "nativeSrc": "6352:18:84",
                        "nodeType": "YulFunctionCall",
                        "src": "6352:18:84"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "6372:2:84",
                        "nodeType": "YulLiteral",
                        "src": "6372:2:84",
                        "type": "",
                        "value": "31"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "6345:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "6345:6:84"
                    },
                    "nativeSrc": "6345:30:84",
                    "nodeType": "YulFunctionCall",
                    "src": "6345:30:84"
                  },
                  "nativeSrc": "6345:30:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "6345:30:84"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "6395:9:84",
                            "nodeType": "YulIdentifier",
                            "src": "6395:9:84"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "6406:2:84",
                            "nodeType": "YulLiteral",
                            "src": "6406:2:84",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "6391:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "6391:3:84"
                        },
                        "nativeSrc": "6391:18:84",
                        "nodeType": "YulFunctionCall",
                        "src": "6391:18:84"
                      },
                      {
                        "hexValue": "437265617465333a206572726f72206372656174696e6720666163746f7279",
                        "kind": "string",
                        "nativeSrc": "6411:33:84",
                        "nodeType": "YulLiteral",
                        "src": "6411:33:84",
                        "type": "",
                        "value": "Create3: error creating factory"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "6384:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "6384:6:84"
                    },
                    "nativeSrc": "6384:61:84",
                    "nodeType": "YulFunctionCall",
                    "src": "6384:61:84"
                  },
                  "nativeSrc": "6384:61:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "6384:61:84"
                },
                {
                  "nativeSrc": "6454:26:84",
                  "nodeType": "YulAssignment",
                  "src": "6454:26:84",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "6466:9:84",
                        "nodeType": "YulIdentifier",
                        "src": "6466:9:84"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "6477:2:84",
                        "nodeType": "YulLiteral",
                        "src": "6477:2:84",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "6462:3:84",
                      "nodeType": "YulIdentifier",
                      "src": "6462:3:84"
                    },
                    "nativeSrc": "6462:18:84",
                    "nodeType": "YulFunctionCall",
                    "src": "6462:18:84"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "6454:4:84",
                      "nodeType": "YulIdentifier",
                      "src": "6454:4:84"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_9c800ce8d486c3397a1a9cc324cfcd264ced53e7b922ccf3390ef85c645102b0__to_t_string_memory_ptr__fromStack_reversed",
            "nativeSrc": "6131:355:84",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "6282:9:84",
                "nodeType": "YulTypedName",
                "src": "6282:9:84",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "6296:4:84",
                "nodeType": "YulTypedName",
                "src": "6296:4:84",
                "type": ""
              }
            ],
            "src": "6131:355:84"
          },
          {
            "body": {
              "nativeSrc": "6628:150:84",
              "nodeType": "YulBlock",
              "src": "6628:150:84",
              "statements": [
                {
                  "nativeSrc": "6638:27:84",
                  "nodeType": "YulVariableDeclaration",
                  "src": "6638:27:84",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nativeSrc": "6658:6:84",
                        "nodeType": "YulIdentifier",
                        "src": "6658:6:84"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nativeSrc": "6652:5:84",
                      "nodeType": "YulIdentifier",
                      "src": "6652:5:84"
                    },
                    "nativeSrc": "6652:13:84",
                    "nodeType": "YulFunctionCall",
                    "src": "6652:13:84"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nativeSrc": "6642:6:84",
                      "nodeType": "YulTypedName",
                      "src": "6642:6:84",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nativeSrc": "6713:6:84",
                            "nodeType": "YulIdentifier",
                            "src": "6713:6:84"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "6721:4:84",
                            "nodeType": "YulLiteral",
                            "src": "6721:4:84",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "6709:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "6709:3:84"
                        },
                        "nativeSrc": "6709:17:84",
                        "nodeType": "YulFunctionCall",
                        "src": "6709:17:84"
                      },
                      {
                        "name": "pos",
                        "nativeSrc": "6728:3:84",
                        "nodeType": "YulIdentifier",
                        "src": "6728:3:84"
                      },
                      {
                        "name": "length",
                        "nativeSrc": "6733:6:84",
                        "nodeType": "YulIdentifier",
                        "src": "6733:6:84"
                      }
                    ],
                    "functionName": {
                      "name": "copy_memory_to_memory_with_cleanup",
                      "nativeSrc": "6674:34:84",
                      "nodeType": "YulIdentifier",
                      "src": "6674:34:84"
                    },
                    "nativeSrc": "6674:66:84",
                    "nodeType": "YulFunctionCall",
                    "src": "6674:66:84"
                  },
                  "nativeSrc": "6674:66:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "6674:66:84"
                },
                {
                  "nativeSrc": "6749:23:84",
                  "nodeType": "YulAssignment",
                  "src": "6749:23:84",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nativeSrc": "6760:3:84",
                        "nodeType": "YulIdentifier",
                        "src": "6760:3:84"
                      },
                      {
                        "name": "length",
                        "nativeSrc": "6765:6:84",
                        "nodeType": "YulIdentifier",
                        "src": "6765:6:84"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "6756:3:84",
                      "nodeType": "YulIdentifier",
                      "src": "6756:3:84"
                    },
                    "nativeSrc": "6756:16:84",
                    "nodeType": "YulFunctionCall",
                    "src": "6756:16:84"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nativeSrc": "6749:3:84",
                      "nodeType": "YulIdentifier",
                      "src": "6749:3:84"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
            "nativeSrc": "6491:287:84",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nativeSrc": "6604:3:84",
                "nodeType": "YulTypedName",
                "src": "6604:3:84",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "6609:6:84",
                "nodeType": "YulTypedName",
                "src": "6609:6:84",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nativeSrc": "6620:3:84",
                "nodeType": "YulTypedName",
                "src": "6620:3:84",
                "type": ""
              }
            ],
            "src": "6491:287:84"
          },
          {
            "body": {
              "nativeSrc": "6957:180:84",
              "nodeType": "YulBlock",
              "src": "6957:180:84",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "6974:9:84",
                        "nodeType": "YulIdentifier",
                        "src": "6974:9:84"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "6985:2:84",
                        "nodeType": "YulLiteral",
                        "src": "6985:2:84",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "6967:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "6967:6:84"
                    },
                    "nativeSrc": "6967:21:84",
                    "nodeType": "YulFunctionCall",
                    "src": "6967:21:84"
                  },
                  "nativeSrc": "6967:21:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "6967:21:84"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "7008:9:84",
                            "nodeType": "YulIdentifier",
                            "src": "7008:9:84"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "7019:2:84",
                            "nodeType": "YulLiteral",
                            "src": "7019:2:84",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "7004:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "7004:3:84"
                        },
                        "nativeSrc": "7004:18:84",
                        "nodeType": "YulFunctionCall",
                        "src": "7004:18:84"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "7024:2:84",
                        "nodeType": "YulLiteral",
                        "src": "7024:2:84",
                        "type": "",
                        "value": "30"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "6997:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "6997:6:84"
                    },
                    "nativeSrc": "6997:30:84",
                    "nodeType": "YulFunctionCall",
                    "src": "6997:30:84"
                  },
                  "nativeSrc": "6997:30:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "6997:30:84"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "7047:9:84",
                            "nodeType": "YulIdentifier",
                            "src": "7047:9:84"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "7058:2:84",
                            "nodeType": "YulLiteral",
                            "src": "7058:2:84",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "7043:3:84",
                          "nodeType": "YulIdentifier",
                          "src": "7043:3:84"
                        },
                        "nativeSrc": "7043:18:84",
                        "nodeType": "YulFunctionCall",
                        "src": "7043:18:84"
                      },
                      {
                        "hexValue": "437265617465333a206572726f72206372656174696e6720746172676574",
                        "kind": "string",
                        "nativeSrc": "7063:32:84",
                        "nodeType": "YulLiteral",
                        "src": "7063:32:84",
                        "type": "",
                        "value": "Create3: error creating target"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "7036:6:84",
                      "nodeType": "YulIdentifier",
                      "src": "7036:6:84"
                    },
                    "nativeSrc": "7036:60:84",
                    "nodeType": "YulFunctionCall",
                    "src": "7036:60:84"
                  },
                  "nativeSrc": "7036:60:84",
                  "nodeType": "YulExpressionStatement",
                  "src": "7036:60:84"
                },
                {
                  "nativeSrc": "7105:26:84",
                  "nodeType": "YulAssignment",
                  "src": "7105:26:84",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "7117:9:84",
                        "nodeType": "YulIdentifier",
                        "src": "7117:9:84"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "7128:2:84",
                        "nodeType": "YulLiteral",
                        "src": "7128:2:84",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "7113:3:84",
                      "nodeType": "YulIdentifier",
                      "src": "7113:3:84"
                    },
                    "nativeSrc": "7113:18:84",
                    "nodeType": "YulFunctionCall",
                    "src": "7113:18:84"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "7105:4:84",
                      "nodeType": "YulIdentifier",
                      "src": "7105:4:84"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_1398d0fda5c4dd82767513d52fb4e190bf03bb7a57b33af8f2bf0a3f254cffa0__to_t_string_memory_ptr__fromStack_reversed",
            "nativeSrc": "6783:354:84",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "6934:9:84",
                "nodeType": "YulTypedName",
                "src": "6934:9:84",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "6948:4:84",
                "nodeType": "YulTypedName",
                "src": "6948:4:84",
                "type": ""
              }
            ],
            "src": "6783:354:84"
          }
        ]
      },
      "contents": "{\n    { }\n    function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_bytes(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let _1 := calldataload(offset)\n        let _2 := 0xffffffffffffffff\n        if gt(_1, _2) { panic_error_0x41() }\n        let _3 := not(31)\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_1, 0x1f), _3), 63), _3))\n        if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _1)\n        if gt(add(add(offset, _1), 0x20), end) { revert(0, 0) }\n        calldatacopy(add(memPtr, 0x20), add(offset, 0x20), _1)\n        mstore(add(add(memPtr, _1), 0x20), 0)\n        array := memPtr\n    }\n    function abi_decode_tuple_t_bytes_memory_ptrt_bytes32(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value0 := abi_decode_bytes(add(headStart, offset), dataEnd)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_bytes32t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let value := calldataload(add(headStart, 32))\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value1 := value\n        let offset := calldataload(add(headStart, 64))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value2 := abi_decode_bytes(add(headStart, offset), dataEnd)\n    }\n    function abi_encode_tuple_t_contract$_WitnetProxy_$3700__to_t_address_payable__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_t_stringliteral_a449f037473e66c93f74665b4547dc6279e787cd06aefbab4d74a9c55d42a13f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 33)\n        mstore(add(headStart, 64), \"WitnetDeployer: deployment faile\")\n        mstore(add(headStart, 96), \"d\")\n        tail := add(headStart, 128)\n    }\n    function copy_memory_to_memory_with_cleanup(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        mstore(add(dst, length), 0)\n    }\n    function abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), 64)\n        let length := mload(value1)\n        mstore(add(headStart, 64), length)\n        copy_memory_to_memory_with_cleanup(add(value1, 32), add(headStart, 96), length)\n        tail := add(add(headStart, and(add(length, 31), not(31))), 96)\n    }\n    function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_tuple_t_stringliteral_07010c659982893c2bfaa9066955408f5c67d963251677f65ceecaf6871b6734__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 33)\n        mstore(add(headStart, 64), \"WitnetDeployer: already proxifie\")\n        mstore(add(headStart, 96), \"d\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_packed_t_bytes1_t_address_t_bytes32_t_bytes32__to_t_bytes1_t_address_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value3, value2, value1, value0) -> end\n    {\n        mstore(pos, and(value0, shl(248, 255)))\n        mstore(add(pos, 1), and(shl(96, value1), not(0xffffffffffffffffffffffff)))\n        mstore(add(pos, 21), value2)\n        mstore(add(pos, 53), value3)\n        end := add(pos, 85)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_8b1a944cf13a9a1c08facb2c9e98623ef3254d2ddb48113885c3e8e97fec8db9_t_address_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_address_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value2, value1, value0) -> end\n    {\n        mstore(pos, shl(248, 255))\n        mstore(add(pos, 1), and(shl(96, value0), not(0xffffffffffffffffffffffff)))\n        mstore(add(pos, 21), value1)\n        mstore(add(pos, 53), value2)\n        end := add(pos, 85)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_4fdc04d28c8d22070e5fd0f23f00bae0b21cc4e5091b5fd7a9cad9babd3668cf_t_address_t_stringliteral_5fe7f977e71dba2ea1a68e21057beebb9be2ac30c6410aa38d4f3fbe41dcffd2__to_t_string_memory_ptr_t_address_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        mstore(pos, shl(242, 13733))\n        mstore(add(pos, 2), and(shl(96, value0), not(0xffffffffffffffffffffffff)))\n        mstore(add(pos, 22), shl(248, 1))\n        end := add(pos, 23)\n    }\n    function abi_encode_tuple_t_stringliteral_eff5890756d2c5621f001169bb16c941329db031eba2edbb4865370c160b3eae__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 30)\n        mstore(add(headStart, 64), \"Create3: target already exists\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_9c800ce8d486c3397a1a9cc324cfcd264ced53e7b922ccf3390ef85c645102b0__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 31)\n        mstore(add(headStart, 64), \"Create3: error creating factory\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n        end := add(pos, length)\n    }\n    function abi_encode_tuple_t_stringliteral_1398d0fda5c4dd82767513d52fb4e190bf03bb7a57b33af8f2bf0a3f254cffa0__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 30)\n        mstore(add(headStart, 64), \"Create3: error creating target\")\n        tail := add(headStart, 96)\n    }\n}",
      "id": 84,
      "language": "Yul",
      "name": "#utility.yul"
    }
  ],
  "sourceMap": "354:2887:26:-:0;;;;;;;;;;;;;;;;;;;",
  "deployedSourceMap": "354:2887:26:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2103:151;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;363:32:84;;;345:51;;333:2;318:18;2103:151:26;;;;;;;898:442;;;;;;:::i;:::-;;:::i;2262:974::-;;;;;;:::i;:::-;;:::i;1686:409::-;;;;;;:::i;:::-;;:::i;2103:151::-;2186:7;2218:28;2240:5;2218:21;:28::i;:::-;2211:35;2103:151;-1:-1:-1;;2103:151:26:o;898:442::-;989:17;1036:31;1050:9;1061:5;1036:13;:31::i;:::-;1024:43;;1082:9;-1:-1:-1;;;;;1082:21:26;;1107:1;1082:26;1078:255;;1217:5;1205:9;1199:16;1192:4;1181:9;1177:20;1174:1;1166:57;1153:70;-1:-1:-1;;;;;;1260:23:26;;1252:69;;;;-1:-1:-1;;;1252:69:26;;2660:2:84;1252:69:26;;;2642:21:84;2699:2;2679:18;;;2672:30;2738:34;2718:18;;;2711:62;-1:-1:-1;;;2789:18:84;;;2782:31;2830:19;;1252:69:26;;;;;;;;2262:974;2390:11;2419:18;2440:30;2459:10;2440:18;:30::i;:::-;2419:51;;2485:10;-1:-1:-1;;;;;2485:22:26;;2511:1;2485:27;2481:748;;2568:58;2583:10;2595:30;;;;;;;;:::i;:::-;-1:-1:-1;;2595:30:26;;;;;;;;;;;;;;2568:14;:58::i;:::-;;2714:10;-1:-1:-1;;;;;2694:42:26;;2755:20;2946:10;3044:9;2844:228;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2694:393;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3129:10:26;-1:-1:-1;3102:39:26;;2481:748;3174:43;;-1:-1:-1;;;3174:43:26;;4095:2:84;3174:43:26;;;4077:21:84;4134:2;4114:18;;;4107:30;4173:34;4153:18;;;4146:62;-1:-1:-1;;;4224:18:84;;;4217:31;4265:19;;3174:43:26;3893:397:84;2262:974:26;;;;;;:::o;1686:409::-;2020:20;;;;;;;1882:177;;;-1:-1:-1;;;;;;1882:177:26;;;4506:39:84;1964:4:26;4582:2:84;4578:15;-1:-1:-1;;4574:53:84;4561:11;;;4554:74;4644:12;;;4637:28;;;;4681:12;;;;4674:28;;;;1882:177:26;;;;;;;;;;4718:12:84;;;;1882:177:26;;;1854:220;;;;;;1686:409::o;5013:1163:62:-;2439:24;;;;;;;;;;;-1:-1:-1;;;2439:24:62;;;;;5227:216;;-1:-1:-1;;;;;;5227:216:62;;;5027:26:84;5320:4:62;5090:2:84;5086:15;;;-1:-1:-1;;5082:53:84;;;5069:11;;;5062:74;5152:12;;;5145:28;;;;2429:35:62;5189:12:84;;;;5182:28;;;;5227:216:62;;;;;;;;;;5226:12:84;;;5227:216:62;;5191:275;;;;;;-1:-1:-1;;;5643:457:62;;;5580:28:84;5641:15;;5637:53;;;5624:11;;;5617:74;-1:-1:-1;;;5707:12:84;;;5700:33;5643:457:62;;;;;;;;;5749:12:84;;;;5643:457:62;;;5607:516;;;;;;5013:1163::o;2865:167::-;2961:7;2993:31;3000:5;3007:13;3022:1;3626:17;3710:20;3724:5;3710:13;:20::i;:::-;3698:32;-1:-1:-1;;;;;;3745:21:62;;;:26;3741:72;;3773:40;;-1:-1:-1;;;3773:40:62;;5974:2:84;3773:40:62;;;5956:21:84;6013:2;5993:18;;;5986:30;6052:32;6032:18;;;6025:60;6102:18;;3773:40:62;5772:354:84;3741:72:62;3912:24;;;;;;;;;;;;;-1:-1:-1;;;3912:24:62;;;;;;3853:16;;3912:24;4254:5;;3853:16;4191:69;4179:81;-1:-1:-1;;;;;;4289:22:62;;4281:66;;;;-1:-1:-1;;;4281:66:62;;6333:2:84;4281:66:62;;;6315:21:84;6372:2;6352:18;;;6345:30;6411:33;6391:18;;;6384:61;6462:18;;4281:66:62;6131:355:84;4281:66:62;4409:13;4428:8;-1:-1:-1;;;;;4428:13:62;4449:6;4457:13;4428:43;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4408:63;;;4490:8;:38;;;;-1:-1:-1;;;;;;4502:21:62;;;:26;;4490:38;4482:81;;;;-1:-1:-1;;;4482:81:62;;6985:2:84;4482:81:62;;;6967:21:84;7024:2;7004:18;;;6997:30;7063:32;7043:18;;;7036:60;7113:18;;4482:81:62;6783:354:84;4482:81:62;3650:921;;;3515:1056;;;;;:::o;-1:-1:-1:-;;;;;;;;:::o;14:180:84:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:84;;14:180;-1:-1:-1;14:180:84:o;407:127::-;468:10;463:3;459:20;456:1;449:31;499:4;496:1;489:15;523:4;520:1;513:15;539:718;581:5;634:3;627:4;619:6;615:17;611:27;601:55;;652:1;649;642:12;601:55;688:6;675:20;714:18;751:2;747;744:10;741:36;;;757:18;;:::i;:::-;832:2;826:9;800:2;886:13;;-1:-1:-1;;882:22:84;;;906:2;878:31;874:40;862:53;;;930:18;;;950:22;;;927:46;924:72;;;976:18;;:::i;:::-;1016:10;1012:2;1005:22;1051:2;1043:6;1036:18;1097:3;1090:4;1085:2;1077:6;1073:15;1069:26;1066:35;1063:55;;;1114:1;1111;1104:12;1063:55;1178:2;1171:4;1163:6;1159:17;1152:4;1144:6;1140:17;1127:54;1225:1;1218:4;1213:2;1205:6;1201:15;1197:26;1190:37;1245:6;1236:15;;;;;;539:718;;;;:::o;1262:388::-;1339:6;1347;1400:2;1388:9;1379:7;1375:23;1371:32;1368:52;;;1416:1;1413;1406:12;1368:52;1456:9;1443:23;1489:18;1481:6;1478:30;1475:50;;;1521:1;1518;1511:12;1475:50;1544:49;1585:7;1576:6;1565:9;1561:22;1544:49;:::i;:::-;1534:59;1640:2;1625:18;;;;1612:32;;-1:-1:-1;;;;1262:388:84:o;1655:562::-;1741:6;1749;1757;1810:2;1798:9;1789:7;1785:23;1781:32;1778:52;;;1826:1;1823;1816:12;1778:52;1849:23;;;-1:-1:-1;1922:2:84;1907:18;;1894:32;-1:-1:-1;;;;;1955:31:84;;1945:42;;1935:70;;2001:1;1998;1991:12;1935:70;2024:5;-1:-1:-1;2080:2:84;2065:18;;2052:32;2107:18;2096:30;;2093:50;;;2139:1;2136;2129:12;2093:50;2162:49;2203:7;2194:6;2183:9;2179:22;2162:49;:::i;:::-;2152:59;;;1655:562;;;;;:::o;2860:250::-;2945:1;2955:113;2969:6;2966:1;2963:13;2955:113;;;3045:11;;;3039:18;3026:11;;;3019:39;2991:2;2984:10;2955:113;;;-1:-1:-1;;3102:1:84;3084:16;;3077:27;2860:250::o;3115:491::-;3319:1;3315;3310:3;3306:11;3302:19;3294:6;3290:32;3279:9;3272:51;3359:2;3354;3343:9;3339:18;3332:30;3253:4;3391:6;3385:13;3434:6;3429:2;3418:9;3414:18;3407:34;3450:79;3522:6;3517:2;3506:9;3502:18;3497:2;3489:6;3485:15;3450:79;:::i;:::-;3590:2;3569:15;-1:-1:-1;;3565:29:84;3550:45;;;;3597:2;3546:54;;3115:491;-1:-1:-1;;;3115:491:84:o;3611:277::-;3678:6;3731:2;3719:9;3710:7;3706:23;3702:32;3699:52;;;3747:1;3744;3737:12;3699:52;3779:9;3773:16;3832:5;3825:13;3818:21;3811:5;3808:32;3798:60;;3854:1;3851;3844:12;6491:287;6620:3;6658:6;6652:13;6674:66;6733:6;6728:3;6721:4;6713:6;6709:17;6674:66;:::i;:::-;6756:16;;;;;6491:287;-1:-1:-1;;6491:287:84:o",
  "source": "// SPDX-License-Identifier: MIT\r\n\r\npragma solidity >=0.8.0 <0.9.0;\r\n\r\nimport \"./WitnetProxy.sol\";\r\nimport \"../libs/Create3.sol\";\r\n\r\n/// @notice WitnetDeployer contract used both as CREATE2 (EIP-1014) factory for Witnet artifacts, \r\n/// @notice and CREATE3 (EIP-3171) factory for Witnet proxies.\r\n/// @author Guillermo Díaz <guillermo@otherplane.com>\r\n\r\ncontract WitnetDeployer {\r\n\r\n    /// @notice Use given `_initCode` and `_salt` to deploy a contract into a deterministic address. \r\n    /// @dev The address of deployed address will be determined by both the `_initCode` and the `_salt`, but not the address\r\n    /// @dev nor the nonce of the caller (i.e. see EIP-1014). \r\n    /// @param _initCode Creation code, including construction logic and input parameters.\r\n    /// @param _salt Arbitrary value to modify resulting address.\r\n    /// @return _deployed Just deployed contract address.\r\n    function deploy(bytes memory _initCode, bytes32 _salt)\r\n        external\r\n        returns (address _deployed)\r\n    {\r\n        _deployed = determineAddr(_initCode, _salt);\r\n        if (_deployed.code.length == 0) {\r\n            assembly {\r\n                _deployed := create2(0, add(_initCode, 0x20), mload(_initCode), _salt)\r\n            }\r\n            require(_deployed != address(0), \"WitnetDeployer: deployment failed\");\r\n        }\r\n    }\r\n\r\n    /// @notice Determine counter-factual address of the contract that would be deployed by the given `_initCode` and a `_salt`.\r\n    /// @param _initCode Creation code, including construction logic and input parameters.\r\n    /// @param _salt Arbitrary value to modify resulting address.\r\n    /// @return Deterministic contract address.\r\n    function determineAddr(bytes memory _initCode, bytes32 _salt)\r\n        public view\r\n        returns (address)\r\n    {\r\n        return address(\r\n            uint160(uint(keccak256(\r\n                abi.encodePacked(\r\n                    bytes1(0xff),\r\n                    address(this),\r\n                    _salt,\r\n                    keccak256(_initCode)\r\n                )\r\n            )))\r\n        );\r\n    }\r\n\r\n    function determineProxyAddr(bytes32 _salt) \r\n        public view\r\n        returns (address)\r\n    {\r\n        return Create3.determineAddr(_salt);\r\n    }\r\n\r\n    function proxify(bytes32 _proxySalt, address _firstImplementation, bytes memory _initData)\r\n        external \r\n        returns (WitnetProxy)\r\n    {\r\n        address _proxyAddr = determineProxyAddr(_proxySalt);\r\n        if (_proxyAddr.code.length == 0) {\r\n            // deploy the WitnetProxy\r\n            Create3.deploy(_proxySalt, type(WitnetProxy).creationCode);\r\n            // settle first implementation address,\r\n            WitnetProxy(payable(_proxyAddr)).upgradeTo(\r\n                _firstImplementation, \r\n                // and initialize it, providing\r\n                abi.encode(\r\n                    // the owner (i.e. the caller of this function)\r\n                    msg.sender,\r\n                    // and some (optional) initialization data\r\n                     _initData\r\n                )\r\n            );\r\n            return WitnetProxy(payable(_proxyAddr));\r\n        } else {\r\n            revert(\"WitnetDeployer: already proxified\");\r\n        }\r\n    }\r\n\r\n}",
  "sourcePath": "C:\\Users\\guill\\github\\witnet\\witnet-solidity-bridge\\contracts\\core\\WitnetDeployer.sol",
  "ast": {
    "absolutePath": "project:/contracts/core/WitnetDeployer.sol",
    "exportedSymbols": {
      "Create3": [
        14149
      ],
      "ERC165": [
        602
      ],
      "IERC165": [
        614
      ],
      "Initializable": [
        253
      ],
      "Proxiable": [
        24189
      ],
      "Upgradeable": [
        24304
      ],
      "WitnetDeployer": [
        3473
      ],
      "WitnetProxy": [
        3700
      ]
    },
    "id": 3474,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 3318,
        "literals": [
          "solidity",
          ">=",
          "0.8",
          ".0",
          "<",
          "0.9",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "35:31:26"
      },
      {
        "absolutePath": "project:/contracts/core/WitnetProxy.sol",
        "file": "./WitnetProxy.sol",
        "id": 3319,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 3474,
        "sourceUnit": 3701,
        "src": "70:27:26",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/libs/Create3.sol",
        "file": "../libs/Create3.sol",
        "id": 3320,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 3474,
        "sourceUnit": 14150,
        "src": "99:29:26",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [],
        "canonicalName": "WitnetDeployer",
        "contractDependencies": [
          3700
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 3321,
          "nodeType": "StructuredDocumentation",
          "src": "132:220:26",
          "text": "@notice WitnetDeployer contract used both as CREATE2 (EIP-1014) factory for Witnet artifacts, \n @notice and CREATE3 (EIP-3171) factory for Witnet proxies.\n @author Guillermo Díaz <guillermo@otherplane.com>"
        },
        "fullyImplemented": true,
        "id": 3473,
        "linearizedBaseContracts": [
          3473
        ],
        "name": "WitnetDeployer",
        "nameLocation": "363:14:26",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 3356,
              "nodeType": "Block",
              "src": "1013:327:26",
              "statements": [
                {
                  "expression": {
                    "id": 3336,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 3331,
                      "name": "_deployed",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3329,
                      "src": "1024:9:26",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 3333,
                          "name": "_initCode",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3324,
                          "src": "1050:9:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        {
                          "id": 3334,
                          "name": "_salt",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3326,
                          "src": "1061:5:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 3332,
                        "name": "determineAddr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3395,
                        "src": "1036:13:26",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$_t_bytes32_$returns$_t_address_$",
                          "typeString": "function (bytes memory,bytes32) view returns (address)"
                        }
                      },
                      "id": 3335,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1036:31:26",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "1024:43:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 3337,
                  "nodeType": "ExpressionStatement",
                  "src": "1024:43:26"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3342,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "expression": {
                          "id": 3338,
                          "name": "_deployed",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3329,
                          "src": "1082:9:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 3339,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "1092:4:26",
                        "memberName": "code",
                        "nodeType": "MemberAccess",
                        "src": "1082:14:26",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 3340,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "1097:6:26",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "1082:21:26",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 3341,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1107:1:26",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "1082:26:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3355,
                  "nodeType": "IfStatement",
                  "src": "1078:255:26",
                  "trueBody": {
                    "id": 3354,
                    "nodeType": "Block",
                    "src": "1110:223:26",
                    "statements": [
                      {
                        "AST": {
                          "nativeSrc": "1134:104:26",
                          "nodeType": "YulBlock",
                          "src": "1134:104:26",
                          "statements": [
                            {
                              "nativeSrc": "1153:70:26",
                              "nodeType": "YulAssignment",
                              "src": "1153:70:26",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "1174:1:26",
                                    "nodeType": "YulLiteral",
                                    "src": "1174:1:26",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_initCode",
                                        "nativeSrc": "1181:9:26",
                                        "nodeType": "YulIdentifier",
                                        "src": "1181:9:26"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "1192:4:26",
                                        "nodeType": "YulLiteral",
                                        "src": "1192:4:26",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "1177:3:26",
                                      "nodeType": "YulIdentifier",
                                      "src": "1177:3:26"
                                    },
                                    "nativeSrc": "1177:20:26",
                                    "nodeType": "YulFunctionCall",
                                    "src": "1177:20:26"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_initCode",
                                        "nativeSrc": "1205:9:26",
                                        "nodeType": "YulIdentifier",
                                        "src": "1205:9:26"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nativeSrc": "1199:5:26",
                                      "nodeType": "YulIdentifier",
                                      "src": "1199:5:26"
                                    },
                                    "nativeSrc": "1199:16:26",
                                    "nodeType": "YulFunctionCall",
                                    "src": "1199:16:26"
                                  },
                                  {
                                    "name": "_salt",
                                    "nativeSrc": "1217:5:26",
                                    "nodeType": "YulIdentifier",
                                    "src": "1217:5:26"
                                  }
                                ],
                                "functionName": {
                                  "name": "create2",
                                  "nativeSrc": "1166:7:26",
                                  "nodeType": "YulIdentifier",
                                  "src": "1166:7:26"
                                },
                                "nativeSrc": "1166:57:26",
                                "nodeType": "YulFunctionCall",
                                "src": "1166:57:26"
                              },
                              "variableNames": [
                                {
                                  "name": "_deployed",
                                  "nativeSrc": "1153:9:26",
                                  "nodeType": "YulIdentifier",
                                  "src": "1153:9:26"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "paris",
                        "externalReferences": [
                          {
                            "declaration": 3329,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1153:9:26",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3324,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1181:9:26",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3324,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1205:9:26",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3326,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1217:5:26",
                            "valueSize": 1
                          }
                        ],
                        "id": 3343,
                        "nodeType": "InlineAssembly",
                        "src": "1125:113:26"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 3350,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3345,
                                "name": "_deployed",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3329,
                                "src": "1260:9:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 3348,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1281:1:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 3347,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1273:7:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 3346,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1273:7:26",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 3349,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1273:10:26",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "1260:23:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "5769746e65744465706c6f7965723a206465706c6f796d656e74206661696c6564",
                              "id": 3351,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1285:35:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a449f037473e66c93f74665b4547dc6279e787cd06aefbab4d74a9c55d42a13f",
                                "typeString": "literal_string \"WitnetDeployer: deployment failed\""
                              },
                              "value": "WitnetDeployer: deployment failed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a449f037473e66c93f74665b4547dc6279e787cd06aefbab4d74a9c55d42a13f",
                                "typeString": "literal_string \"WitnetDeployer: deployment failed\""
                              }
                            ],
                            "id": 3344,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              4294967278,
                              4294967278
                            ],
                            "referencedDeclaration": 4294967278,
                            "src": "1252:7:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3352,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1252:69:26",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3353,
                        "nodeType": "ExpressionStatement",
                        "src": "1252:69:26"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 3322,
              "nodeType": "StructuredDocumentation",
              "src": "387:505:26",
              "text": "@notice Use given `_initCode` and `_salt` to deploy a contract into a deterministic address. \n @dev The address of deployed address will be determined by both the `_initCode` and the `_salt`, but not the address\n @dev nor the nonce of the caller (i.e. see EIP-1014). \n @param _initCode Creation code, including construction logic and input parameters.\n @param _salt Arbitrary value to modify resulting address.\n @return _deployed Just deployed contract address."
            },
            "functionSelector": "4af63f02",
            "id": 3357,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "deploy",
            "nameLocation": "907:6:26",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3327,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3324,
                  "mutability": "mutable",
                  "name": "_initCode",
                  "nameLocation": "927:9:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 3357,
                  "src": "914:22:26",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 3323,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "914:5:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3326,
                  "mutability": "mutable",
                  "name": "_salt",
                  "nameLocation": "946:5:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 3357,
                  "src": "938:13:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3325,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "938:7:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "913:39:26"
            },
            "returnParameters": {
              "id": 3330,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3329,
                  "mutability": "mutable",
                  "name": "_deployed",
                  "nameLocation": "997:9:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 3357,
                  "src": "989:17:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3328,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "989:7:26",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "988:19:26"
            },
            "scope": 3473,
            "src": "898:442:26",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3394,
              "nodeType": "Block",
              "src": "1801:294:26",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "hexValue": "30786666",
                                            "id": 3378,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "1928:4:26",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_255_by_1",
                                              "typeString": "int_const 255"
                                            },
                                            "value": "0xff"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_rational_255_by_1",
                                              "typeString": "int_const 255"
                                            }
                                          ],
                                          "id": 3377,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "1921:6:26",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_bytes1_$",
                                            "typeString": "type(bytes1)"
                                          },
                                          "typeName": {
                                            "id": 3376,
                                            "name": "bytes1",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "1921:6:26",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 3379,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1921:12:26",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes1",
                                          "typeString": "bytes1"
                                        }
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "id": 3382,
                                            "name": "this",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4294967268,
                                            "src": "1964:4:26",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_WitnetDeployer_$3473",
                                              "typeString": "contract WitnetDeployer"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_contract$_WitnetDeployer_$3473",
                                              "typeString": "contract WitnetDeployer"
                                            }
                                          ],
                                          "id": 3381,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "1956:7:26",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_address_$",
                                            "typeString": "type(address)"
                                          },
                                          "typeName": {
                                            "id": 3380,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "1956:7:26",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 3383,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1956:13:26",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "id": 3384,
                                        "name": "_salt",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3362,
                                        "src": "1992:5:26",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "id": 3386,
                                            "name": "_initCode",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3360,
                                            "src": "2030:9:26",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          ],
                                          "id": 3385,
                                          "name": "keccak256",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4294967288,
                                          "src": "2020:9:26",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                            "typeString": "function (bytes memory) pure returns (bytes32)"
                                          }
                                        },
                                        "id": 3387,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2020:20:26",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes1",
                                          "typeString": "bytes1"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "expression": {
                                        "id": 3374,
                                        "name": "abi",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967295,
                                        "src": "1882:3:26",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_abi",
                                          "typeString": "abi"
                                        }
                                      },
                                      "id": 3375,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberLocation": "1886:12:26",
                                      "memberName": "encodePacked",
                                      "nodeType": "MemberAccess",
                                      "src": "1882:16:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                        "typeString": "function () pure returns (bytes memory)"
                                      }
                                    },
                                    "id": 3388,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1882:177:26",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 3373,
                                  "name": "keccak256",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4294967288,
                                  "src": "1854:9:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                    "typeString": "function (bytes memory) pure returns (bytes32)"
                                  }
                                },
                                "id": 3389,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1854:220:26",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 3372,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1849:4:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 3371,
                                "name": "uint",
                                "nodeType": "ElementaryTypeName",
                                "src": "1849:4:26",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 3390,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1849:226:26",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 3370,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1841:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint160_$",
                            "typeString": "type(uint160)"
                          },
                          "typeName": {
                            "id": 3369,
                            "name": "uint160",
                            "nodeType": "ElementaryTypeName",
                            "src": "1841:7:26",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 3391,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1841:235:26",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        }
                      ],
                      "id": 3368,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "1819:7:26",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": {
                        "id": 3367,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1819:7:26",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 3392,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1819:268:26",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 3366,
                  "id": 3393,
                  "nodeType": "Return",
                  "src": "1812:275:26"
                }
              ]
            },
            "documentation": {
              "id": 3358,
              "nodeType": "StructuredDocumentation",
              "src": "1348:332:26",
              "text": "@notice Determine counter-factual address of the contract that would be deployed by the given `_initCode` and a `_salt`.\n @param _initCode Creation code, including construction logic and input parameters.\n @param _salt Arbitrary value to modify resulting address.\n @return Deterministic contract address."
            },
            "functionSelector": "d3933c29",
            "id": 3395,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "determineAddr",
            "nameLocation": "1695:13:26",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3363,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3360,
                  "mutability": "mutable",
                  "name": "_initCode",
                  "nameLocation": "1722:9:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 3395,
                  "src": "1709:22:26",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 3359,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1709:5:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3362,
                  "mutability": "mutable",
                  "name": "_salt",
                  "nameLocation": "1741:5:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 3395,
                  "src": "1733:13:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3361,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1733:7:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1708:39:26"
            },
            "returnParameters": {
              "id": 3366,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3365,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 3395,
                  "src": "1787:7:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3364,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1787:7:26",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1786:9:26"
            },
            "scope": 3473,
            "src": "1686:409:26",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3407,
              "nodeType": "Block",
              "src": "2200:54:26",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 3404,
                        "name": "_salt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3397,
                        "src": "2240:5:26",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "id": 3402,
                        "name": "Create3",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14149,
                        "src": "2218:7:26",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Create3_$14149_$",
                          "typeString": "type(library Create3)"
                        }
                      },
                      "id": 3403,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "2226:13:26",
                      "memberName": "determineAddr",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 14148,
                      "src": "2218:21:26",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32) view returns (address)"
                      }
                    },
                    "id": 3405,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2218:28:26",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 3401,
                  "id": 3406,
                  "nodeType": "Return",
                  "src": "2211:35:26"
                }
              ]
            },
            "functionSelector": "4998f038",
            "id": 3408,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "determineProxyAddr",
            "nameLocation": "2112:18:26",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3398,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3397,
                  "mutability": "mutable",
                  "name": "_salt",
                  "nameLocation": "2139:5:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 3408,
                  "src": "2131:13:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3396,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2131:7:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2130:15:26"
            },
            "returnParameters": {
              "id": 3401,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3400,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 3408,
                  "src": "2186:7:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3399,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2186:7:26",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2185:9:26"
            },
            "scope": 3473,
            "src": "2103:151:26",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3471,
              "nodeType": "Block",
              "src": "2408:828:26",
              "statements": [
                {
                  "assignments": [
                    3421
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3421,
                      "mutability": "mutable",
                      "name": "_proxyAddr",
                      "nameLocation": "2427:10:26",
                      "nodeType": "VariableDeclaration",
                      "scope": 3471,
                      "src": "2419:18:26",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3420,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2419:7:26",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 3425,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 3423,
                        "name": "_proxySalt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3410,
                        "src": "2459:10:26",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 3422,
                      "name": "determineProxyAddr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3408,
                      "src": "2440:18:26",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32) view returns (address)"
                      }
                    },
                    "id": 3424,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2440:30:26",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2419:51:26"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3430,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "expression": {
                          "id": 3426,
                          "name": "_proxyAddr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3421,
                          "src": "2485:10:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 3427,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "2496:4:26",
                        "memberName": "code",
                        "nodeType": "MemberAccess",
                        "src": "2485:15:26",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 3428,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "2501:6:26",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "2485:22:26",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 3429,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2511:1:26",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2485:27:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 3469,
                    "nodeType": "Block",
                    "src": "3159:70:26",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "hexValue": "5769746e65744465706c6f7965723a20616c72656164792070726f786966696564",
                              "id": 3466,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3181:35:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_07010c659982893c2bfaa9066955408f5c67d963251677f65ceecaf6871b6734",
                                "typeString": "literal_string \"WitnetDeployer: already proxified\""
                              },
                              "value": "WitnetDeployer: already proxified"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_07010c659982893c2bfaa9066955408f5c67d963251677f65ceecaf6871b6734",
                                "typeString": "literal_string \"WitnetDeployer: already proxified\""
                              }
                            ],
                            "id": 3465,
                            "name": "revert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              4294967277,
                              4294967277
                            ],
                            "referencedDeclaration": 4294967277,
                            "src": "3174:6:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory) pure"
                            }
                          },
                          "id": 3467,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3174:43:26",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3468,
                        "nodeType": "ExpressionStatement",
                        "src": "3174:43:26"
                      }
                    ]
                  },
                  "id": 3470,
                  "nodeType": "IfStatement",
                  "src": "2481:748:26",
                  "trueBody": {
                    "id": 3464,
                    "nodeType": "Block",
                    "src": "2514:639:26",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3434,
                              "name": "_proxySalt",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3410,
                              "src": "2583:10:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 3436,
                                    "name": "WitnetProxy",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3700,
                                    "src": "2600:11:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_WitnetProxy_$3700_$",
                                      "typeString": "type(contract WitnetProxy)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_WitnetProxy_$3700_$",
                                      "typeString": "type(contract WitnetProxy)"
                                    }
                                  ],
                                  "id": 3435,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4294967269,
                                  "src": "2595:4:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 3437,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2595:17:26",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_WitnetProxy_$3700",
                                  "typeString": "type(contract WitnetProxy)"
                                }
                              },
                              "id": 3438,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "2613:12:26",
                              "memberName": "creationCode",
                              "nodeType": "MemberAccess",
                              "src": "2595:30:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 3431,
                              "name": "Create3",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14149,
                              "src": "2568:7:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Create3_$14149_$",
                                "typeString": "type(library Create3)"
                              }
                            },
                            "id": 3433,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "2576:6:26",
                            "memberName": "deploy",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 14030,
                            "src": "2568:14:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$",
                              "typeString": "function (bytes32,bytes memory) returns (address)"
                            }
                          },
                          "id": 3439,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2568:58:26",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 3440,
                        "nodeType": "ExpressionStatement",
                        "src": "2568:58:26"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3448,
                              "name": "_firstImplementation",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3412,
                              "src": "2755:20:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "id": 3451,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4294967281,
                                    "src": "2946:3:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 3452,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "2950:6:26",
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "src": "2946:10:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 3453,
                                  "name": "_initData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3414,
                                  "src": "3044:9:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "expression": {
                                  "id": 3449,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4294967295,
                                  "src": "2844:3:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 3450,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "2848:6:26",
                                "memberName": "encode",
                                "nodeType": "MemberAccess",
                                "src": "2844:10:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 3454,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2844:228:26",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "id": 3444,
                                      "name": "_proxyAddr",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3421,
                                      "src": "2714:10:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 3443,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "2706:8:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_payable_$",
                                      "typeString": "type(address payable)"
                                    },
                                    "typeName": {
                                      "id": 3442,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "2706:8:26",
                                      "stateMutability": "payable",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 3445,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2706:19:26",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                ],
                                "id": 3441,
                                "name": "WitnetProxy",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3700,
                                "src": "2694:11:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_WitnetProxy_$3700_$",
                                  "typeString": "type(contract WitnetProxy)"
                                }
                              },
                              "id": 3446,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2694:32:26",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_WitnetProxy_$3700",
                                "typeString": "contract WitnetProxy"
                              }
                            },
                            "id": 3447,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "2727:9:26",
                            "memberName": "upgradeTo",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3690,
                            "src": "2694:42:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                              "typeString": "function (address,bytes memory) external returns (bool)"
                            }
                          },
                          "id": 3455,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2694:393:26",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3456,
                        "nodeType": "ExpressionStatement",
                        "src": "2694:393:26"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 3460,
                                  "name": "_proxyAddr",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3421,
                                  "src": "3129:10:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 3459,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3121:8:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_payable_$",
                                  "typeString": "type(address payable)"
                                },
                                "typeName": {
                                  "id": 3458,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3121:8:26",
                                  "stateMutability": "payable",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 3461,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3121:19:26",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 3457,
                            "name": "WitnetProxy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3700,
                            "src": "3109:11:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_WitnetProxy_$3700_$",
                              "typeString": "type(contract WitnetProxy)"
                            }
                          },
                          "id": 3462,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3109:32:26",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_WitnetProxy_$3700",
                            "typeString": "contract WitnetProxy"
                          }
                        },
                        "functionReturnParameters": 3419,
                        "id": 3463,
                        "nodeType": "Return",
                        "src": "3102:39:26"
                      }
                    ]
                  }
                }
              ]
            },
            "functionSelector": "5ba489e7",
            "id": 3472,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "proxify",
            "nameLocation": "2271:7:26",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3415,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3410,
                  "mutability": "mutable",
                  "name": "_proxySalt",
                  "nameLocation": "2287:10:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 3472,
                  "src": "2279:18:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3409,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2279:7:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3412,
                  "mutability": "mutable",
                  "name": "_firstImplementation",
                  "nameLocation": "2307:20:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 3472,
                  "src": "2299:28:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3411,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2299:7:26",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3414,
                  "mutability": "mutable",
                  "name": "_initData",
                  "nameLocation": "2342:9:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 3472,
                  "src": "2329:22:26",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 3413,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2329:5:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2278:74:26"
            },
            "returnParameters": {
              "id": 3419,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3418,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 3472,
                  "src": "2390:11:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_WitnetProxy_$3700",
                    "typeString": "contract WitnetProxy"
                  },
                  "typeName": {
                    "id": 3417,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 3416,
                      "name": "WitnetProxy",
                      "nameLocations": [
                        "2390:11:26"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 3700,
                      "src": "2390:11:26"
                    },
                    "referencedDeclaration": 3700,
                    "src": "2390:11:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_WitnetProxy_$3700",
                      "typeString": "contract WitnetProxy"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2389:13:26"
            },
            "scope": 3473,
            "src": "2262:974:26",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 3474,
        "src": "354:2887:26",
        "usedErrors": [],
        "usedEvents": []
      }
    ],
    "src": "35:3206:26"
  },
  "compiler": {
    "name": "solc",
    "version": "0.8.25+commit.b61c2a91.Emscripten.clang"
  },
  "networks": {
    "322": {
      "events": {},
      "links": {},
      "address": "0x03232aBE800D1638B30432FeEF300581De323a4E"
    },
    "11155111": {
      "events": {},
      "links": {},
      "address": "0x03232aBE800D1638B30432FeEF300581De323a4E"
    }
  },
  "schemaVersion": "3.4.16",
  "updatedAt": "2024-12-05T09:36:04.207Z",
  "devdoc": {
    "author": "Guillermo Díaz <guillermo@otherplane.com>",
    "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": "WitnetDeployer contract used both as CREATE2 (EIP-1014) factory for Witnet artifacts, and CREATE3 (EIP-3171) factory for Witnet proxies.",
    "version": 1
  }
}