{
  "contractName": "MockERC1155",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "uri_",
          "type": "string"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "ApprovalForAll",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "ids",
          "type": "uint256[]"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "values",
          "type": "uint256[]"
        }
      ],
      "name": "TransferBatch",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "TransferSingle",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "value",
          "type": "string"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "URI",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "accounts",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "ids",
          "type": "uint256[]"
        }
      ],
      "name": "balanceOfBatch",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "isApprovedForAll",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "ids",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "safeBatchTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "setApprovalForAll",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "testMint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "id",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "amount",
          "type": "uint256[]"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "testMintBatch",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "uri",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"uri_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"URI\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"testMint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"id\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amount\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"testMintBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to `approved`.\"},\"TransferBatch(address,address,address,uint256[],uint256[])\":{\"details\":\"Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all transfers.\"},\"TransferSingle(address,address,address,uint256,uint256)\":{\"details\":\"Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.\"},\"URI(string,uint256)\":{\"details\":\"Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. If an {URI} event was emitted for `id`, the standard https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value returned by {IERC1155MetadataURI-uri}.\"}},\"kind\":\"dev\",\"methods\":{\"balanceOf(address,uint256)\":{\"details\":\"See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address.\"},\"balanceOfBatch(address[],uint256[])\":{\"details\":\"See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC1155-isApprovedForAll}.\"},\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\":{\"details\":\"See {IERC1155-safeBatchTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,uint256,bytes)\":{\"details\":\"See {IERC1155-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC1155-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/mocks/MockERC1155.sol\":\"MockERC1155\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":25},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\":{\"keccak256\":\"0x6392f2cfe3a5ee802227fe7a2dfd47096d881aec89bddd214b35c5b46d3cd941\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd9c47a375639888e726a99da718890ba16d17d7ad9eacb0ccc892d46d1b3ee0\",\"dweb:/ipfs/Qmb41W5RUjy2sWg49A2rMnxekSeEk6SvGyJL5tyCCSr7un\"]},\"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol\":{\"keccak256\":\"0xeb373f1fdc7b755c6a750123a9b9e3a8a02c1470042fd6505d875000a80bde0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e28648f994abf1d6bc345644a361cc0b7efa544f8bc0c8ec26011fed85a91ec\",\"dweb:/ipfs/QmVVE7AiRjKaQYYji7TkjmTeVzGpNmms5eoxqTCfvvpj6D\"]},\"@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol\":{\"keccak256\":\"0xa66d18b9a85458d28fc3304717964502ae36f7f8a2ff35bc83f6f85d74b03574\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e46c80ea068989111d6103e5521223f9ef337e93de76deed8b03f75c6f7b2797\",\"dweb:/ipfs/QmNoSE6knNfFncdDDLTb3fGR6oSQty1srG96Vsx3E9wQdw\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xf96f969e24029d43d0df89e59d365f277021dac62b48e1c1e3ebe0acdd7f1ca1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec772b45a624be516f1c81970caa8a2e144301e9d0921cbc1a2789fef39a1269\",\"dweb:/ipfs/QmNyjwxCrGhQMyzLD93oUobJXVe9ceJvRvfXwbEtuxPiEj\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xa4d1d62251f8574deb032a35fc948386a9b4de74b812d4f545a1ac120486b48a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c969013129ba9e651a20735ef659fef6d8a1139ea3607bd4b26ddea2d645634\",\"dweb:/ipfs/QmVhVa6LGuzAcB8qgDtVHRkucn4ihj5UZr8xBLcJkP6ucb\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa1e8e83cd0087785df04ac79fb395d9f3684caeaf973d9e2c71caef723a3a5d6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33bbf48cc069be677705037ba7520c22b1b622c23b33e1a71495f2d36549d40b\",\"dweb:/ipfs/Qmct36zWXv3j7LZB83uwbg7TXwnZSN1fqHNDZ93GG98bGz\"]},\"project:/contracts/mocks/MockERC1155.sol\":{\"keccak256\":\"0xe3041617c3366eebe0ce473798a6061e18586851b3e023f90f763ba731e7def2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cd5af4630f2f420714aac395f6c8777fbc6d652a6adda77a145115a4d17e45ba\",\"dweb:/ipfs/Qma1jzazv1eAurpy6ccUv3ttGc1oDZ6YwEyS6nt3rZ9Pxr\"]},\"project:/contracts/token/ERC1155/ERC1155Base.sol\":{\"keccak256\":\"0x52880aeca03599fa886f162a8130a175aceb793600c5b09b7c1ae951c30b109f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea681b075e10ed6404961923afe619933d9b7c904fd59391caba2e5767cc4556\",\"dweb:/ipfs/Qma1TTFwCkLeRJXL7vsadLHgjvmumhfTQd8FeJ4kf4oeGs\"]},\"project:/contracts/token/ERC1155/ERC1155Core.sol\":{\"keccak256\":\"0x3c2d6f41b6293f667326ac028729fe2f6b4f7c35af334c1136cd8d7192187c8b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db91053b42e25febef3cd2fc9f82a3565fcdc7a56775005bc5bca805db18b8a9\",\"dweb:/ipfs/QmdDDgyiYqM5EZg5n4XA1kWoGfxVKk6CooQUzfTWj1pGNe\"]}},\"version\":1}",
  "bytecode": "0x60806040523480156200001157600080fd5b5060405162001bc138038062001bc183398101604081905262000034916200008c565b60408051602080820183526000808352835191820190935282815290916200005d8382620001f0565b5060016200006c8282620001f0565b50505050620002bc565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215620000a057600080fd5b82516001600160401b0380821115620000b857600080fd5b818501915085601f830112620000cd57600080fd5b815181811115620000e257620000e262000076565b604051601f8201601f19908116603f011681019083821181831017156200010d576200010d62000076565b8160405282815288868487010111156200012657600080fd5b600093505b828410156200014a57848401860151818501870152928501926200012b565b600086848301015280965050505050505092915050565b600181811c908216806200017657607f821691505b6020821081036200019757634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001eb57600081815260208120601f850160051c81016020861015620001c65750805b601f850160051c820191505b81811015620001e757828155600101620001d2565b5050505b505050565b81516001600160401b038111156200020c576200020c62000076565b62000224816200021d845462000161565b846200019d565b602080601f8311600181146200025c5760008415620002435750858301515b600019600386901b1c1916600185901b178555620001e7565b600085815260208120601f198616915b828110156200028d578886015182559484019460019091019084016200026c565b5085821015620002ac5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6118f580620002cc6000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c8062fdd58e146100a857806301ffc9a7146100ce57806306fdde03146100f15780630e89341c14610106578063292241f2146101275780632eb2c2d61461013c5780634e1273f41461014f57806395d89b411461016f578063a22cb46514610177578063e985e9c51461018a578063f242432a1461019d578063fda63b7e146101b0575b600080fd5b6100bb6100b6366004610e99565b6101c3565b6040519081526020015b60405180910390f35b6100e16100dc366004610edc565b61025e565b60405190151581526020016100c5565b6100f96102ae565b6040516100c59190610f46565b6100f9610114366004610f59565b5060408051602081019091526000815290565b61013a610135366004610fba565b610340565b005b61013a61014a36600461116a565b610389565b61016261015d366004611213565b6103ce565b6040516100c59190611318565b6100f96104f7565b61013a61018536600461132b565b610506565b6100e1610198366004611367565b610515565b61013a6101ab36600461139a565b610543565b61013a6101be366004611442565b610588565b60006001600160a01b0383166102335760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084015b60405180910390fd5b5060008181526002602090815260408083206001600160a01b03861684529091529020545b92915050565b60006001600160e01b03198216636cdb3d1360e11b148061028f57506001600160e01b031982166303a24d0760e21b145b8061025857506301ffc9a760e01b6001600160e01b0319831614610258565b6060600080546102bd906114ec565b80601f01602080910402602001604051908101604052809291908181526020018280546102e9906114ec565b80156103365780601f1061030b57610100808354040283529160200191610336565b820191906000526020600020905b81548152906001019060200180831161031957829003601f168201915b5050505050905090565b61038285858585858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061063392505050565b5050505050565b6001600160a01b0385163314806103a557506103a58533610515565b6103c15760405162461bcd60e51b815260040161022a90611526565b6103828585858585610706565b606081518351146104335760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b606482015260840161022a565b600083516001600160401b0381111561044e5761044e611021565b604051908082528060200260200182016040528015610477578160200160208202803683370190505b50905060005b84518110156104ef576104c285828151811061049b5761049b611574565b60200260200101518583815181106104b5576104b5611574565b60200260200101516101c3565b8282815181106104d4576104d4611574565b60209081029190910101526104e8816115a0565b905061047d565b509392505050565b6060600180546102bd906114ec565b6105113383836108a5565b5050565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205460ff1690565b6001600160a01b03851633148061055f575061055f8533610515565b61057b5760405162461bcd60e51b815260040161022a90611526565b6103828585858585610985565b61062a8787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808b0282810182019093528a82529093508a92508991829185019084908082843760009201919091525050604080516020601f8a018190048102820181019092528881529250889150879081908401838280828437600092019190915250610ab392505050565b50505050505050565b6001600160a01b0384166106595760405162461bcd60e51b815260040161022a906115b9565b33600061066585610bff565b9050600061067285610bff565b905060008681526002602090815260408083206001600160a01b038b168452909152812080548792906106a69084906115fa565b909155505060408051878152602081018790526001600160a01b03808a1692600092918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a461062a83600089898989610c4a565b81518351146107275760405162461bcd60e51b815260040161022a9061160d565b6001600160a01b03841661074d5760405162461bcd60e51b815260040161022a90611655565b3360005b845181101561083757600085828151811061076e5761076e611574565b60200260200101519050600085838151811061078c5761078c611574565b60209081029190910181015160008481526002835260408082206001600160a01b038e1683529093529190912054909150818110156107dd5760405162461bcd60e51b815260040161022a9061169a565b60008381526002602090815260408083206001600160a01b038e8116855292528083208585039055908b1682528120805484929061081c9084906115fa565b9250508190555050505080610830906115a0565b9050610751565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516108879291906116e4565b60405180910390a461089d818787878787610dac565b505050505050565b816001600160a01b0316836001600160a01b0316036109185760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b606482015260840161022a565b6001600160a01b03838116600081815260036020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0384166109ab5760405162461bcd60e51b815260040161022a90611655565b3360006109b785610bff565b905060006109c485610bff565b905060008681526002602090815260408083206001600160a01b038c16845290915290205485811015610a095760405162461bcd60e51b815260040161022a9061169a565b60008781526002602090815260408083206001600160a01b038d8116855292528083208985039055908a16825281208054889290610a489084906115fa565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4610aa8848a8a8a8a8a610c4a565b505050505050505050565b6001600160a01b038416610ad95760405162461bcd60e51b815260040161022a906115b9565b8151835114610afa5760405162461bcd60e51b815260040161022a9061160d565b3360005b8451811015610b9757838181518110610b1957610b19611574565b602002602001015160026000878481518110610b3757610b37611574565b602002602001015181526020019081526020016000206000886001600160a01b03166001600160a01b031681526020019081526020016000206000828254610b7f91906115fa565b90915550819050610b8f816115a0565b915050610afe565b50846001600160a01b031660006001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610be89291906116e4565b60405180910390a461038281600087878787610dac565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610c3957610c39611574565b602090810291909101015292915050565b610c5c846001600160a01b0316610e6e565b1561089d5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190610c959089908990889088908890600401611712565b6020604051808303816000875af1925050508015610cd0575060408051601f3d908101601f19168201909252610ccd91810190611757565b60015b610d7c57610cdc611774565b806308c379a003610d155750610cf0611790565b80610cfb5750610d17565b8060405162461bcd60e51b815260040161022a9190610f46565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b606482015260840161022a565b6001600160e01b0319811663f23a6e6160e01b1461062a5760405162461bcd60e51b815260040161022a90611819565b610dbe846001600160a01b0316610e6e565b1561089d5760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190610df79089908990889088908890600401611861565b6020604051808303816000875af1925050508015610e32575060408051601f3d908101601f19168201909252610e2f91810190611757565b60015b610e3e57610cdc611774565b6001600160e01b0319811663bc197c8160e01b1461062a5760405162461bcd60e51b815260040161022a90611819565b6001600160a01b03163b151590565b80356001600160a01b0381168114610e9457600080fd5b919050565b60008060408385031215610eac57600080fd5b610eb583610e7d565b946020939093013593505050565b6001600160e01b031981168114610ed957600080fd5b50565b600060208284031215610eee57600080fd5b8135610ef981610ec3565b9392505050565b6000815180845260005b81811015610f2657602081850181015186830182015201610f0a565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610ef96020830184610f00565b600060208284031215610f6b57600080fd5b5035919050565b60008083601f840112610f8457600080fd5b5081356001600160401b03811115610f9b57600080fd5b602083019150836020828501011115610fb357600080fd5b9250929050565b600080600080600060808688031215610fd257600080fd5b610fdb86610e7d565b9450602086013593506040860135925060608601356001600160401b0381111561100457600080fd5b61101088828901610f72565b969995985093965092949392505050565b634e487b7160e01b600052604160045260246000fd5b601f8201601f191681016001600160401b038111828210171561105c5761105c611021565b6040525050565b60006001600160401b0382111561107c5761107c611021565b5060051b60200190565b600082601f83011261109757600080fd5b813560206110a482611063565b6040516110b18282611037565b83815260059390931b85018201928281019150868411156110d157600080fd5b8286015b848110156110ec57803583529183019183016110d5565b509695505050505050565b600082601f83011261110857600080fd5b81356001600160401b0381111561112157611121611021565b604051611138601f8301601f191660200182611037565b81815284602083860101111561114d57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a0868803121561118257600080fd5b61118b86610e7d565b945061119960208701610e7d565b935060408601356001600160401b03808211156111b557600080fd5b6111c189838a01611086565b945060608801359150808211156111d757600080fd5b6111e389838a01611086565b935060808801359150808211156111f957600080fd5b50611206888289016110f7565b9150509295509295909350565b6000806040838503121561122657600080fd5b82356001600160401b038082111561123d57600080fd5b818501915085601f83011261125157600080fd5b8135602061125e82611063565b60405161126b8282611037565b83815260059390931b850182019282810191508984111561128b57600080fd5b948201945b838610156112b0576112a186610e7d565b82529482019490820190611290565b965050860135925050808211156112c657600080fd5b506112d385828601611086565b9150509250929050565b600081518084526020808501945080840160005b8381101561130d578151875295820195908201906001016112f1565b509495945050505050565b602081526000610ef960208301846112dd565b6000806040838503121561133e57600080fd5b61134783610e7d565b91506020830135801515811461135c57600080fd5b809150509250929050565b6000806040838503121561137a57600080fd5b61138383610e7d565b915061139160208401610e7d565b90509250929050565b600080600080600060a086880312156113b257600080fd5b6113bb86610e7d565b94506113c960208701610e7d565b9350604086013592506060860135915060808601356001600160401b038111156113f257600080fd5b611206888289016110f7565b60008083601f84011261141057600080fd5b5081356001600160401b0381111561142757600080fd5b6020830191508360208260051b8501011115610fb357600080fd5b60008060008060008060006080888a03121561145d57600080fd5b61146688610e7d565b965060208801356001600160401b038082111561148257600080fd5b61148e8b838c016113fe565b909850965060408a01359150808211156114a757600080fd5b6114b38b838c016113fe565b909650945060608a01359150808211156114cc57600080fd5b506114d98a828b01610f72565b989b979a50959850939692959293505050565b600181811c9082168061150057607f821691505b60208210810361152057634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60408201526d195c881bdc88185c1c1c9bdd995960921b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016115b2576115b261158a565b5060010190565b60208082526021908201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736040820152607360f81b606082015260800190565b808201808211156102585761025861158a565b60208082526028908201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b6040815260006116f760408301856112dd565b828103602084015261170981856112dd565b95945050505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a06080820181905260009061174c90830184610f00565b979650505050505050565b60006020828403121561176957600080fd5b8151610ef981610ec3565b600060033d111561178d5760046000803e5060005160e01c5b90565b600060443d101561179e5790565b6040516003193d81016004833e81513d6001600160401b0381602484011181841117156117cd57505050505090565b82850191508151818111156117e55750505050505090565b843d87010160208285010111156117ff5750505050505090565b61180e60208286010187611037565b509095945050505050565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b6001600160a01b0386811682528516602082015260a06040820181905260009061188d908301866112dd565b828103606084015261189f81866112dd565b905082810360808401526118b38185610f00565b9897505050505050505056fea264697066735822122002c686f3e97f7db5add8389e60c558ea942dd22f765d7ad801b710367909f54064736f6c63430008130033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a35760003560e01c8062fdd58e146100a857806301ffc9a7146100ce57806306fdde03146100f15780630e89341c14610106578063292241f2146101275780632eb2c2d61461013c5780634e1273f41461014f57806395d89b411461016f578063a22cb46514610177578063e985e9c51461018a578063f242432a1461019d578063fda63b7e146101b0575b600080fd5b6100bb6100b6366004610e99565b6101c3565b6040519081526020015b60405180910390f35b6100e16100dc366004610edc565b61025e565b60405190151581526020016100c5565b6100f96102ae565b6040516100c59190610f46565b6100f9610114366004610f59565b5060408051602081019091526000815290565b61013a610135366004610fba565b610340565b005b61013a61014a36600461116a565b610389565b61016261015d366004611213565b6103ce565b6040516100c59190611318565b6100f96104f7565b61013a61018536600461132b565b610506565b6100e1610198366004611367565b610515565b61013a6101ab36600461139a565b610543565b61013a6101be366004611442565b610588565b60006001600160a01b0383166102335760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084015b60405180910390fd5b5060008181526002602090815260408083206001600160a01b03861684529091529020545b92915050565b60006001600160e01b03198216636cdb3d1360e11b148061028f57506001600160e01b031982166303a24d0760e21b145b8061025857506301ffc9a760e01b6001600160e01b0319831614610258565b6060600080546102bd906114ec565b80601f01602080910402602001604051908101604052809291908181526020018280546102e9906114ec565b80156103365780601f1061030b57610100808354040283529160200191610336565b820191906000526020600020905b81548152906001019060200180831161031957829003601f168201915b5050505050905090565b61038285858585858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061063392505050565b5050505050565b6001600160a01b0385163314806103a557506103a58533610515565b6103c15760405162461bcd60e51b815260040161022a90611526565b6103828585858585610706565b606081518351146104335760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b606482015260840161022a565b600083516001600160401b0381111561044e5761044e611021565b604051908082528060200260200182016040528015610477578160200160208202803683370190505b50905060005b84518110156104ef576104c285828151811061049b5761049b611574565b60200260200101518583815181106104b5576104b5611574565b60200260200101516101c3565b8282815181106104d4576104d4611574565b60209081029190910101526104e8816115a0565b905061047d565b509392505050565b6060600180546102bd906114ec565b6105113383836108a5565b5050565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205460ff1690565b6001600160a01b03851633148061055f575061055f8533610515565b61057b5760405162461bcd60e51b815260040161022a90611526565b6103828585858585610985565b61062a8787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808b0282810182019093528a82529093508a92508991829185019084908082843760009201919091525050604080516020601f8a018190048102820181019092528881529250889150879081908401838280828437600092019190915250610ab392505050565b50505050505050565b6001600160a01b0384166106595760405162461bcd60e51b815260040161022a906115b9565b33600061066585610bff565b9050600061067285610bff565b905060008681526002602090815260408083206001600160a01b038b168452909152812080548792906106a69084906115fa565b909155505060408051878152602081018790526001600160a01b03808a1692600092918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a461062a83600089898989610c4a565b81518351146107275760405162461bcd60e51b815260040161022a9061160d565b6001600160a01b03841661074d5760405162461bcd60e51b815260040161022a90611655565b3360005b845181101561083757600085828151811061076e5761076e611574565b60200260200101519050600085838151811061078c5761078c611574565b60209081029190910181015160008481526002835260408082206001600160a01b038e1683529093529190912054909150818110156107dd5760405162461bcd60e51b815260040161022a9061169a565b60008381526002602090815260408083206001600160a01b038e8116855292528083208585039055908b1682528120805484929061081c9084906115fa565b9250508190555050505080610830906115a0565b9050610751565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516108879291906116e4565b60405180910390a461089d818787878787610dac565b505050505050565b816001600160a01b0316836001600160a01b0316036109185760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b606482015260840161022a565b6001600160a01b03838116600081815260036020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0384166109ab5760405162461bcd60e51b815260040161022a90611655565b3360006109b785610bff565b905060006109c485610bff565b905060008681526002602090815260408083206001600160a01b038c16845290915290205485811015610a095760405162461bcd60e51b815260040161022a9061169a565b60008781526002602090815260408083206001600160a01b038d8116855292528083208985039055908a16825281208054889290610a489084906115fa565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4610aa8848a8a8a8a8a610c4a565b505050505050505050565b6001600160a01b038416610ad95760405162461bcd60e51b815260040161022a906115b9565b8151835114610afa5760405162461bcd60e51b815260040161022a9061160d565b3360005b8451811015610b9757838181518110610b1957610b19611574565b602002602001015160026000878481518110610b3757610b37611574565b602002602001015181526020019081526020016000206000886001600160a01b03166001600160a01b031681526020019081526020016000206000828254610b7f91906115fa565b90915550819050610b8f816115a0565b915050610afe565b50846001600160a01b031660006001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610be89291906116e4565b60405180910390a461038281600087878787610dac565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610c3957610c39611574565b602090810291909101015292915050565b610c5c846001600160a01b0316610e6e565b1561089d5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190610c959089908990889088908890600401611712565b6020604051808303816000875af1925050508015610cd0575060408051601f3d908101601f19168201909252610ccd91810190611757565b60015b610d7c57610cdc611774565b806308c379a003610d155750610cf0611790565b80610cfb5750610d17565b8060405162461bcd60e51b815260040161022a9190610f46565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b606482015260840161022a565b6001600160e01b0319811663f23a6e6160e01b1461062a5760405162461bcd60e51b815260040161022a90611819565b610dbe846001600160a01b0316610e6e565b1561089d5760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190610df79089908990889088908890600401611861565b6020604051808303816000875af1925050508015610e32575060408051601f3d908101601f19168201909252610e2f91810190611757565b60015b610e3e57610cdc611774565b6001600160e01b0319811663bc197c8160e01b1461062a5760405162461bcd60e51b815260040161022a90611819565b6001600160a01b03163b151590565b80356001600160a01b0381168114610e9457600080fd5b919050565b60008060408385031215610eac57600080fd5b610eb583610e7d565b946020939093013593505050565b6001600160e01b031981168114610ed957600080fd5b50565b600060208284031215610eee57600080fd5b8135610ef981610ec3565b9392505050565b6000815180845260005b81811015610f2657602081850181015186830182015201610f0a565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610ef96020830184610f00565b600060208284031215610f6b57600080fd5b5035919050565b60008083601f840112610f8457600080fd5b5081356001600160401b03811115610f9b57600080fd5b602083019150836020828501011115610fb357600080fd5b9250929050565b600080600080600060808688031215610fd257600080fd5b610fdb86610e7d565b9450602086013593506040860135925060608601356001600160401b0381111561100457600080fd5b61101088828901610f72565b969995985093965092949392505050565b634e487b7160e01b600052604160045260246000fd5b601f8201601f191681016001600160401b038111828210171561105c5761105c611021565b6040525050565b60006001600160401b0382111561107c5761107c611021565b5060051b60200190565b600082601f83011261109757600080fd5b813560206110a482611063565b6040516110b18282611037565b83815260059390931b85018201928281019150868411156110d157600080fd5b8286015b848110156110ec57803583529183019183016110d5565b509695505050505050565b600082601f83011261110857600080fd5b81356001600160401b0381111561112157611121611021565b604051611138601f8301601f191660200182611037565b81815284602083860101111561114d57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a0868803121561118257600080fd5b61118b86610e7d565b945061119960208701610e7d565b935060408601356001600160401b03808211156111b557600080fd5b6111c189838a01611086565b945060608801359150808211156111d757600080fd5b6111e389838a01611086565b935060808801359150808211156111f957600080fd5b50611206888289016110f7565b9150509295509295909350565b6000806040838503121561122657600080fd5b82356001600160401b038082111561123d57600080fd5b818501915085601f83011261125157600080fd5b8135602061125e82611063565b60405161126b8282611037565b83815260059390931b850182019282810191508984111561128b57600080fd5b948201945b838610156112b0576112a186610e7d565b82529482019490820190611290565b965050860135925050808211156112c657600080fd5b506112d385828601611086565b9150509250929050565b600081518084526020808501945080840160005b8381101561130d578151875295820195908201906001016112f1565b509495945050505050565b602081526000610ef960208301846112dd565b6000806040838503121561133e57600080fd5b61134783610e7d565b91506020830135801515811461135c57600080fd5b809150509250929050565b6000806040838503121561137a57600080fd5b61138383610e7d565b915061139160208401610e7d565b90509250929050565b600080600080600060a086880312156113b257600080fd5b6113bb86610e7d565b94506113c960208701610e7d565b9350604086013592506060860135915060808601356001600160401b038111156113f257600080fd5b611206888289016110f7565b60008083601f84011261141057600080fd5b5081356001600160401b0381111561142757600080fd5b6020830191508360208260051b8501011115610fb357600080fd5b60008060008060008060006080888a03121561145d57600080fd5b61146688610e7d565b965060208801356001600160401b038082111561148257600080fd5b61148e8b838c016113fe565b909850965060408a01359150808211156114a757600080fd5b6114b38b838c016113fe565b909650945060608a01359150808211156114cc57600080fd5b506114d98a828b01610f72565b989b979a50959850939692959293505050565b600181811c9082168061150057607f821691505b60208210810361152057634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60408201526d195c881bdc88185c1c1c9bdd995960921b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016115b2576115b261158a565b5060010190565b60208082526021908201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736040820152607360f81b606082015260800190565b808201808211156102585761025861158a565b60208082526028908201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b6040815260006116f760408301856112dd565b828103602084015261170981856112dd565b95945050505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a06080820181905260009061174c90830184610f00565b979650505050505050565b60006020828403121561176957600080fd5b8151610ef981610ec3565b600060033d111561178d5760046000803e5060005160e01c5b90565b600060443d101561179e5790565b6040516003193d81016004833e81513d6001600160401b0381602484011181841117156117cd57505050505090565b82850191508151818111156117e55750505050505090565b843d87010160208285010111156117ff5750505050505090565b61180e60208286010187611037565b509095945050505050565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b6001600160a01b0386811682528516602082015260a06040820181905260009061188d908301866112dd565b828103606084015261189f81866112dd565b905082810360808401526118b38185610f00565b9897505050505050505056fea264697066735822122002c686f3e97f7db5add8389e60c558ea942dd22f765d7ad801b710367909f54064736f6c63430008130033",
  "immutableReferences": {},
  "generatedSources": [
    {
      "ast": {
        "nodeType": "YulBlock",
        "src": "0:3779:81",
        "statements": [
          {
            "nodeType": "YulBlock",
            "src": "6:3:81",
            "statements": []
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "46:95:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "63:1:81",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "70:3:81",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "75:10:81",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "66:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "66:20:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "56:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "56:31:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "56:31:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "103:1:81",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "106:4:81",
                        "type": "",
                        "value": "0x41"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "96:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "96:15:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "96:15:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "127:1:81",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "130:4:81",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nodeType": "YulIdentifier",
                      "src": "120:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "120:15:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "120:15:81"
                }
              ]
            },
            "name": "panic_error_0x41",
            "nodeType": "YulFunctionDefinition",
            "src": "14:127:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "237:951:81",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "247:12:81",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "257:2:81",
                    "type": "",
                    "value": "32"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "251:2:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "304:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "313:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "316:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "306:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "306:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "306:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "279:7:81"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "288:9:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "275:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "275:23:81"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "300:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "271:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "271:32:81"
                  },
                  "nodeType": "YulIf",
                  "src": "268:52:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "329:30:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "349:9:81"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "343:5:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "343:16:81"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "333:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "368:28:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "386:2:81",
                            "type": "",
                            "value": "64"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "390:1:81",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "382:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "382:10:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "394:1:81",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "sub",
                      "nodeType": "YulIdentifier",
                      "src": "378:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "378:18:81"
                  },
                  "variables": [
                    {
                      "name": "_2",
                      "nodeType": "YulTypedName",
                      "src": "372:2:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "423:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "432:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "435:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "425:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "425:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "425:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "411:6:81"
                      },
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "419:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "408:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "408:14:81"
                  },
                  "nodeType": "YulIf",
                  "src": "405:34:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "448:32:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "462:9:81"
                      },
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "473:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "458:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "458:22:81"
                  },
                  "variables": [
                    {
                      "name": "_3",
                      "nodeType": "YulTypedName",
                      "src": "452:2:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "528:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "537:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "540:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "530:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "530:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "530:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "_3",
                                "nodeType": "YulIdentifier",
                                "src": "507:2:81"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "511:4:81",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "503:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "503:13:81"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "518:7:81"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "499:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "499:27:81"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "492:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "492:35:81"
                  },
                  "nodeType": "YulIf",
                  "src": "489:55:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "553:19:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "_3",
                        "nodeType": "YulIdentifier",
                        "src": "569:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "563:5:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "563:9:81"
                  },
                  "variables": [
                    {
                      "name": "_4",
                      "nodeType": "YulTypedName",
                      "src": "557:2:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "595:22:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nodeType": "YulIdentifier",
                            "src": "597:16:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "597:18:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "597:18:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "_4",
                        "nodeType": "YulIdentifier",
                        "src": "587:2:81"
                      },
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "591:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "584:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "584:10:81"
                  },
                  "nodeType": "YulIf",
                  "src": "581:36:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "626:17:81",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "640:2:81",
                        "type": "",
                        "value": "31"
                      }
                    ],
                    "functionName": {
                      "name": "not",
                      "nodeType": "YulIdentifier",
                      "src": "636:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "636:7:81"
                  },
                  "variables": [
                    {
                      "name": "_5",
                      "nodeType": "YulTypedName",
                      "src": "630:2:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "652:23:81",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "672:2:81",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "666:5:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "666:9:81"
                  },
                  "variables": [
                    {
                      "name": "memPtr",
                      "nodeType": "YulTypedName",
                      "src": "656:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "684:71:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nodeType": "YulIdentifier",
                        "src": "706:6:81"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "730:2:81"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "734:4:81",
                                        "type": "",
                                        "value": "0x1f"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "726:3:81"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "726:13:81"
                                  },
                                  {
                                    "name": "_5",
                                    "nodeType": "YulIdentifier",
                                    "src": "741:2:81"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "722:3:81"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "722:22:81"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "746:2:81",
                                "type": "",
                                "value": "63"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "718:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "718:31:81"
                          },
                          {
                            "name": "_5",
                            "nodeType": "YulIdentifier",
                            "src": "751:2:81"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "714:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "714:40:81"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "702:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "702:53:81"
                  },
                  "variables": [
                    {
                      "name": "newFreePtr",
                      "nodeType": "YulTypedName",
                      "src": "688:10:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "814:22:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nodeType": "YulIdentifier",
                            "src": "816:16:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "816:18:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "816:18:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nodeType": "YulIdentifier",
                            "src": "773:10:81"
                          },
                          {
                            "name": "_2",
                            "nodeType": "YulIdentifier",
                            "src": "785:2:81"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "770:2:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "770:18:81"
                      },
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nodeType": "YulIdentifier",
                            "src": "793:10:81"
                          },
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "805:6:81"
                          }
                        ],
                        "functionName": {
                          "name": "lt",
                          "nodeType": "YulIdentifier",
                          "src": "790:2:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "790:22:81"
                      }
                    ],
                    "functionName": {
                      "name": "or",
                      "nodeType": "YulIdentifier",
                      "src": "767:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "767:46:81"
                  },
                  "nodeType": "YulIf",
                  "src": "764:72:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "852:2:81",
                        "type": "",
                        "value": "64"
                      },
                      {
                        "name": "newFreePtr",
                        "nodeType": "YulIdentifier",
                        "src": "856:10:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "845:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "845:22:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "845:22:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nodeType": "YulIdentifier",
                        "src": "883:6:81"
                      },
                      {
                        "name": "_4",
                        "nodeType": "YulIdentifier",
                        "src": "891:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "876:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "876:18:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "876:18:81"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "940:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "949:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "952:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "942:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "942:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "942:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "_3",
                                "nodeType": "YulIdentifier",
                                "src": "917:2:81"
                              },
                              {
                                "name": "_4",
                                "nodeType": "YulIdentifier",
                                "src": "921:2:81"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "913:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "913:11:81"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "926:2:81"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "909:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "909:20:81"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "931:7:81"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "906:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "906:33:81"
                  },
                  "nodeType": "YulIf",
                  "src": "903:53:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "965:10:81",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "974:1:81",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "i",
                      "nodeType": "YulTypedName",
                      "src": "969:1:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1030:83:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "memPtr",
                                      "nodeType": "YulIdentifier",
                                      "src": "1059:6:81"
                                    },
                                    {
                                      "name": "i",
                                      "nodeType": "YulIdentifier",
                                      "src": "1067:1:81"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "1055:3:81"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "1055:14:81"
                                },
                                {
                                  "name": "_1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1071:2:81"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "1051:3:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "1051:23:81"
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "name": "_3",
                                          "nodeType": "YulIdentifier",
                                          "src": "1090:2:81"
                                        },
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "1094:1:81"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "1086:3:81"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1086:10:81"
                                    },
                                    {
                                      "name": "_1",
                                      "nodeType": "YulIdentifier",
                                      "src": "1098:2:81"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "1082:3:81"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "1082:19:81"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nodeType": "YulIdentifier",
                                "src": "1076:5:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "1076:26:81"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "1044:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1044:59:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1044:59:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "995:1:81"
                      },
                      {
                        "name": "_4",
                        "nodeType": "YulIdentifier",
                        "src": "998:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "992:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "992:9:81"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "1002:19:81",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "1004:15:81",
                        "value": {
                          "arguments": [
                            {
                              "name": "i",
                              "nodeType": "YulIdentifier",
                              "src": "1013:1:81"
                            },
                            {
                              "name": "_1",
                              "nodeType": "YulIdentifier",
                              "src": "1016:2:81"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "1009:3:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1009:10:81"
                        },
                        "variableNames": [
                          {
                            "name": "i",
                            "nodeType": "YulIdentifier",
                            "src": "1004:1:81"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "988:3:81",
                    "statements": []
                  },
                  "src": "984:129:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "1137:6:81"
                              },
                              {
                                "name": "_4",
                                "nodeType": "YulIdentifier",
                                "src": "1145:2:81"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "1133:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1133:15:81"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "1150:2:81"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1129:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1129:24:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1155:1:81",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "1122:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1122:35:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1122:35:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1166:16:81",
                  "value": {
                    "name": "memPtr",
                    "nodeType": "YulIdentifier",
                    "src": "1176:6:81"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "1166:6:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_string_memory_ptr_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "203:9:81",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "214:7:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "226:6:81",
                "type": ""
              }
            ],
            "src": "146:1042:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1248:325:81",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "1258:22:81",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1272:1:81",
                        "type": "",
                        "value": "1"
                      },
                      {
                        "name": "data",
                        "nodeType": "YulIdentifier",
                        "src": "1275:4:81"
                      }
                    ],
                    "functionName": {
                      "name": "shr",
                      "nodeType": "YulIdentifier",
                      "src": "1268:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1268:12:81"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nodeType": "YulIdentifier",
                      "src": "1258:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1289:38:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "data",
                        "nodeType": "YulIdentifier",
                        "src": "1319:4:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1325:1:81",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "and",
                      "nodeType": "YulIdentifier",
                      "src": "1315:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1315:12:81"
                  },
                  "variables": [
                    {
                      "name": "outOfPlaceEncoding",
                      "nodeType": "YulTypedName",
                      "src": "1293:18:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1366:31:81",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "1368:27:81",
                        "value": {
                          "arguments": [
                            {
                              "name": "length",
                              "nodeType": "YulIdentifier",
                              "src": "1382:6:81"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1390:4:81",
                              "type": "",
                              "value": "0x7f"
                            }
                          ],
                          "functionName": {
                            "name": "and",
                            "nodeType": "YulIdentifier",
                            "src": "1378:3:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1378:17:81"
                        },
                        "variableNames": [
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "1368:6:81"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "outOfPlaceEncoding",
                        "nodeType": "YulIdentifier",
                        "src": "1346:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "1339:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1339:26:81"
                  },
                  "nodeType": "YulIf",
                  "src": "1336:61:81"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1456:111:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1477:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "1484:3:81",
                                  "type": "",
                                  "value": "224"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "1489:10:81",
                                  "type": "",
                                  "value": "0x4e487b71"
                                }
                              ],
                              "functionName": {
                                "name": "shl",
                                "nodeType": "YulIdentifier",
                                "src": "1480:3:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "1480:20:81"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "1470:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1470:31:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1470:31:81"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1521:1:81",
                              "type": "",
                              "value": "4"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1524:4:81",
                              "type": "",
                              "value": "0x22"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "1514:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1514:15:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1514:15:81"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1549:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1552:4:81",
                              "type": "",
                              "value": "0x24"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1542:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1542:15:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1542:15:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "outOfPlaceEncoding",
                        "nodeType": "YulIdentifier",
                        "src": "1412:18:81"
                      },
                      {
                        "arguments": [
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "1435:6:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1443:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "lt",
                          "nodeType": "YulIdentifier",
                          "src": "1432:2:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1432:14:81"
                      }
                    ],
                    "functionName": {
                      "name": "eq",
                      "nodeType": "YulIdentifier",
                      "src": "1409:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1409:38:81"
                  },
                  "nodeType": "YulIf",
                  "src": "1406:161:81"
                }
              ]
            },
            "name": "extract_byte_array_length",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "data",
                "nodeType": "YulTypedName",
                "src": "1228:4:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "1237:6:81",
                "type": ""
              }
            ],
            "src": "1193:380:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1634:65:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1651:1:81",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "name": "ptr",
                        "nodeType": "YulIdentifier",
                        "src": "1654:3:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "1644:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1644:14:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1644:14:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1667:26:81",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1685:1:81",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1688:4:81",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "keccak256",
                      "nodeType": "YulIdentifier",
                      "src": "1675:9:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1675:18:81"
                  },
                  "variableNames": [
                    {
                      "name": "data",
                      "nodeType": "YulIdentifier",
                      "src": "1667:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "array_dataslot_string_storage",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "ptr",
                "nodeType": "YulTypedName",
                "src": "1617:3:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "data",
                "nodeType": "YulTypedName",
                "src": "1625:4:81",
                "type": ""
              }
            ],
            "src": "1578:121:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1785:464:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1818:425:81",
                    "statements": [
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "1832:11:81",
                        "value": {
                          "kind": "number",
                          "nodeType": "YulLiteral",
                          "src": "1842:1:81",
                          "type": "",
                          "value": "0"
                        },
                        "variables": [
                          {
                            "name": "_1",
                            "nodeType": "YulTypedName",
                            "src": "1836:2:81",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "_1",
                              "nodeType": "YulIdentifier",
                              "src": "1863:2:81"
                            },
                            {
                              "name": "array",
                              "nodeType": "YulIdentifier",
                              "src": "1867:5:81"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "1856:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1856:17:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1856:17:81"
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "1886:31:81",
                        "value": {
                          "arguments": [
                            {
                              "name": "_1",
                              "nodeType": "YulIdentifier",
                              "src": "1908:2:81"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1912:4:81",
                              "type": "",
                              "value": "0x20"
                            }
                          ],
                          "functionName": {
                            "name": "keccak256",
                            "nodeType": "YulIdentifier",
                            "src": "1898:9:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1898:19:81"
                        },
                        "variables": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "1890:4:81",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "1930:57:81",
                        "value": {
                          "arguments": [
                            {
                              "name": "data",
                              "nodeType": "YulIdentifier",
                              "src": "1953:4:81"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "1963:1:81",
                                  "type": "",
                                  "value": "5"
                                },
                                {
                                  "arguments": [
                                    {
                                      "name": "startIndex",
                                      "nodeType": "YulIdentifier",
                                      "src": "1970:10:81"
                                    },
                                    {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "1982:2:81",
                                      "type": "",
                                      "value": "31"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "1966:3:81"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "1966:19:81"
                                }
                              ],
                              "functionName": {
                                "name": "shr",
                                "nodeType": "YulIdentifier",
                                "src": "1959:3:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "1959:27:81"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "1949:3:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1949:38:81"
                        },
                        "variables": [
                          {
                            "name": "deleteStart",
                            "nodeType": "YulTypedName",
                            "src": "1934:11:81",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2024:23:81",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2026:19:81",
                              "value": {
                                "name": "data",
                                "nodeType": "YulIdentifier",
                                "src": "2041:4:81"
                              },
                              "variableNames": [
                                {
                                  "name": "deleteStart",
                                  "nodeType": "YulIdentifier",
                                  "src": "2026:11:81"
                                }
                              ]
                            }
                          ]
                        },
                        "condition": {
                          "arguments": [
                            {
                              "name": "startIndex",
                              "nodeType": "YulIdentifier",
                              "src": "2006:10:81"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2018:4:81",
                              "type": "",
                              "value": "0x20"
                            }
                          ],
                          "functionName": {
                            "name": "lt",
                            "nodeType": "YulIdentifier",
                            "src": "2003:2:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2003:20:81"
                        },
                        "nodeType": "YulIf",
                        "src": "2000:47:81"
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "2060:41:81",
                        "value": {
                          "arguments": [
                            {
                              "name": "data",
                              "nodeType": "YulIdentifier",
                              "src": "2074:4:81"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "2084:1:81",
                                  "type": "",
                                  "value": "5"
                                },
                                {
                                  "arguments": [
                                    {
                                      "name": "len",
                                      "nodeType": "YulIdentifier",
                                      "src": "2091:3:81"
                                    },
                                    {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "2096:2:81",
                                      "type": "",
                                      "value": "31"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "2087:3:81"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "2087:12:81"
                                }
                              ],
                              "functionName": {
                                "name": "shr",
                                "nodeType": "YulIdentifier",
                                "src": "2080:3:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "2080:20:81"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "2070:3:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2070:31:81"
                        },
                        "variables": [
                          {
                            "name": "_2",
                            "nodeType": "YulTypedName",
                            "src": "2064:2:81",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "2114:24:81",
                        "value": {
                          "name": "deleteStart",
                          "nodeType": "YulIdentifier",
                          "src": "2127:11:81"
                        },
                        "variables": [
                          {
                            "name": "start",
                            "nodeType": "YulTypedName",
                            "src": "2118:5:81",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2212:21:81",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "start",
                                    "nodeType": "YulIdentifier",
                                    "src": "2221:5:81"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2228:2:81"
                                  }
                                ],
                                "functionName": {
                                  "name": "sstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2214:6:81"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2214:17:81"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2214:17:81"
                            }
                          ]
                        },
                        "condition": {
                          "arguments": [
                            {
                              "name": "start",
                              "nodeType": "YulIdentifier",
                              "src": "2162:5:81"
                            },
                            {
                              "name": "_2",
                              "nodeType": "YulIdentifier",
                              "src": "2169:2:81"
                            }
                          ],
                          "functionName": {
                            "name": "lt",
                            "nodeType": "YulIdentifier",
                            "src": "2159:2:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2159:13:81"
                        },
                        "nodeType": "YulForLoop",
                        "post": {
                          "nodeType": "YulBlock",
                          "src": "2173:26:81",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2175:22:81",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "start",
                                    "nodeType": "YulIdentifier",
                                    "src": "2188:5:81"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2195:1:81",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2184:3:81"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2184:13:81"
                              },
                              "variableNames": [
                                {
                                  "name": "start",
                                  "nodeType": "YulIdentifier",
                                  "src": "2175:5:81"
                                }
                              ]
                            }
                          ]
                        },
                        "pre": {
                          "nodeType": "YulBlock",
                          "src": "2155:3:81",
                          "statements": []
                        },
                        "src": "2151:82:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "len",
                        "nodeType": "YulIdentifier",
                        "src": "1801:3:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1806:2:81",
                        "type": "",
                        "value": "31"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "1798:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1798:11:81"
                  },
                  "nodeType": "YulIf",
                  "src": "1795:448:81"
                }
              ]
            },
            "name": "clean_up_bytearray_end_slots_string_storage",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "array",
                "nodeType": "YulTypedName",
                "src": "1757:5:81",
                "type": ""
              },
              {
                "name": "len",
                "nodeType": "YulTypedName",
                "src": "1764:3:81",
                "type": ""
              },
              {
                "name": "startIndex",
                "nodeType": "YulTypedName",
                "src": "1769:10:81",
                "type": ""
              }
            ],
            "src": "1704:545:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2339:81:81",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "2349:65:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "data",
                            "nodeType": "YulIdentifier",
                            "src": "2364:4:81"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2382:1:81",
                                        "type": "",
                                        "value": "3"
                                      },
                                      {
                                        "name": "len",
                                        "nodeType": "YulIdentifier",
                                        "src": "2385:3:81"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "2378:3:81"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2378:11:81"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2395:1:81",
                                        "type": "",
                                        "value": "0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "2391:3:81"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2391:6:81"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "2374:3:81"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2374:24:81"
                              }
                            ],
                            "functionName": {
                              "name": "not",
                              "nodeType": "YulIdentifier",
                              "src": "2370:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "2370:29:81"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "2360:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2360:40:81"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2406:1:81",
                            "type": "",
                            "value": "1"
                          },
                          {
                            "name": "len",
                            "nodeType": "YulIdentifier",
                            "src": "2409:3:81"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "2402:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2402:11:81"
                      }
                    ],
                    "functionName": {
                      "name": "or",
                      "nodeType": "YulIdentifier",
                      "src": "2357:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2357:57:81"
                  },
                  "variableNames": [
                    {
                      "name": "used",
                      "nodeType": "YulIdentifier",
                      "src": "2349:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "extract_used_part_and_set_length_of_short_byte_array",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "data",
                "nodeType": "YulTypedName",
                "src": "2316:4:81",
                "type": ""
              },
              {
                "name": "len",
                "nodeType": "YulTypedName",
                "src": "2322:3:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "used",
                "nodeType": "YulTypedName",
                "src": "2330:4:81",
                "type": ""
              }
            ],
            "src": "2254:166:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2521:1256:81",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "2531:24:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "src",
                        "nodeType": "YulIdentifier",
                        "src": "2551:3:81"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "2545:5:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2545:10:81"
                  },
                  "variables": [
                    {
                      "name": "newLen",
                      "nodeType": "YulTypedName",
                      "src": "2535:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2598:22:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nodeType": "YulIdentifier",
                            "src": "2600:16:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2600:18:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2600:18:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "newLen",
                        "nodeType": "YulIdentifier",
                        "src": "2570:6:81"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2586:2:81",
                                "type": "",
                                "value": "64"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2590:1:81",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nodeType": "YulIdentifier",
                              "src": "2582:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "2582:10:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2594:1:81",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "2578:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2578:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "2567:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2567:30:81"
                  },
                  "nodeType": "YulIf",
                  "src": "2564:56:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "slot",
                        "nodeType": "YulIdentifier",
                        "src": "2673:4:81"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "slot",
                                "nodeType": "YulIdentifier",
                                "src": "2711:4:81"
                              }
                            ],
                            "functionName": {
                              "name": "sload",
                              "nodeType": "YulIdentifier",
                              "src": "2705:5:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "2705:11:81"
                          }
                        ],
                        "functionName": {
                          "name": "extract_byte_array_length",
                          "nodeType": "YulIdentifier",
                          "src": "2679:25:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2679:38:81"
                      },
                      {
                        "name": "newLen",
                        "nodeType": "YulIdentifier",
                        "src": "2719:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "clean_up_bytearray_end_slots_string_storage",
                      "nodeType": "YulIdentifier",
                      "src": "2629:43:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2629:97:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2629:97:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "2735:18:81",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "2752:1:81",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "srcOffset",
                      "nodeType": "YulTypedName",
                      "src": "2739:9:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "2762:23:81",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "2781:4:81",
                    "type": "",
                    "value": "0x20"
                  },
                  "variables": [
                    {
                      "name": "srcOffset_1",
                      "nodeType": "YulTypedName",
                      "src": "2766:11:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2794:24:81",
                  "value": {
                    "name": "srcOffset_1",
                    "nodeType": "YulIdentifier",
                    "src": "2807:11:81"
                  },
                  "variableNames": [
                    {
                      "name": "srcOffset",
                      "nodeType": "YulIdentifier",
                      "src": "2794:9:81"
                    }
                  ]
                },
                {
                  "cases": [
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "2864:656:81",
                        "statements": [
                          {
                            "nodeType": "YulVariableDeclaration",
                            "src": "2878:35:81",
                            "value": {
                              "arguments": [
                                {
                                  "name": "newLen",
                                  "nodeType": "YulIdentifier",
                                  "src": "2897:6:81"
                                },
                                {
                                  "arguments": [
                                    {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "2909:2:81",
                                      "type": "",
                                      "value": "31"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "not",
                                    "nodeType": "YulIdentifier",
                                    "src": "2905:3:81"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "2905:7:81"
                                }
                              ],
                              "functionName": {
                                "name": "and",
                                "nodeType": "YulIdentifier",
                                "src": "2893:3:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "2893:20:81"
                            },
                            "variables": [
                              {
                                "name": "loopEnd",
                                "nodeType": "YulTypedName",
                                "src": "2882:7:81",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "nodeType": "YulVariableDeclaration",
                            "src": "2926:49:81",
                            "value": {
                              "arguments": [
                                {
                                  "name": "slot",
                                  "nodeType": "YulIdentifier",
                                  "src": "2970:4:81"
                                }
                              ],
                              "functionName": {
                                "name": "array_dataslot_string_storage",
                                "nodeType": "YulIdentifier",
                                "src": "2940:29:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "2940:35:81"
                            },
                            "variables": [
                              {
                                "name": "dstPtr",
                                "nodeType": "YulTypedName",
                                "src": "2930:6:81",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "nodeType": "YulVariableDeclaration",
                            "src": "2988:10:81",
                            "value": {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2997:1:81",
                              "type": "",
                              "value": "0"
                            },
                            "variables": [
                              {
                                "name": "i",
                                "nodeType": "YulTypedName",
                                "src": "2992:1:81",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "body": {
                              "nodeType": "YulBlock",
                              "src": "3075:172:81",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "name": "dstPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "3100:6:81"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "src",
                                                "nodeType": "YulIdentifier",
                                                "src": "3118:3:81"
                                              },
                                              {
                                                "name": "srcOffset",
                                                "nodeType": "YulIdentifier",
                                                "src": "3123:9:81"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "3114:3:81"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3114:19:81"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mload",
                                          "nodeType": "YulIdentifier",
                                          "src": "3108:5:81"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3108:26:81"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sstore",
                                      "nodeType": "YulIdentifier",
                                      "src": "3093:6:81"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3093:42:81"
                                  },
                                  "nodeType": "YulExpressionStatement",
                                  "src": "3093:42:81"
                                },
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "3152:24:81",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "dstPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "3166:6:81"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3174:1:81",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3162:3:81"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3162:14:81"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "dstPtr",
                                      "nodeType": "YulIdentifier",
                                      "src": "3152:6:81"
                                    }
                                  ]
                                },
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "3193:40:81",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "srcOffset",
                                        "nodeType": "YulIdentifier",
                                        "src": "3210:9:81"
                                      },
                                      {
                                        "name": "srcOffset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "3221:11:81"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3206:3:81"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3206:27:81"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "srcOffset",
                                      "nodeType": "YulIdentifier",
                                      "src": "3193:9:81"
                                    }
                                  ]
                                }
                              ]
                            },
                            "condition": {
                              "arguments": [
                                {
                                  "name": "i",
                                  "nodeType": "YulIdentifier",
                                  "src": "3022:1:81"
                                },
                                {
                                  "name": "loopEnd",
                                  "nodeType": "YulIdentifier",
                                  "src": "3025:7:81"
                                }
                              ],
                              "functionName": {
                                "name": "lt",
                                "nodeType": "YulIdentifier",
                                "src": "3019:2:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "3019:14:81"
                            },
                            "nodeType": "YulForLoop",
                            "post": {
                              "nodeType": "YulBlock",
                              "src": "3034:28:81",
                              "statements": [
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "3036:24:81",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "3045:1:81"
                                      },
                                      {
                                        "name": "srcOffset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "3048:11:81"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3041:3:81"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3041:19:81"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "i",
                                      "nodeType": "YulIdentifier",
                                      "src": "3036:1:81"
                                    }
                                  ]
                                }
                              ]
                            },
                            "pre": {
                              "nodeType": "YulBlock",
                              "src": "3015:3:81",
                              "statements": []
                            },
                            "src": "3011:236:81"
                          },
                          {
                            "body": {
                              "nodeType": "YulBlock",
                              "src": "3295:166:81",
                              "statements": [
                                {
                                  "nodeType": "YulVariableDeclaration",
                                  "src": "3313:43:81",
                                  "value": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "src",
                                            "nodeType": "YulIdentifier",
                                            "src": "3340:3:81"
                                          },
                                          {
                                            "name": "srcOffset",
                                            "nodeType": "YulIdentifier",
                                            "src": "3345:9:81"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "3336:3:81"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3336:19:81"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "3330:5:81"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3330:26:81"
                                  },
                                  "variables": [
                                    {
                                      "name": "lastValue",
                                      "nodeType": "YulTypedName",
                                      "src": "3317:9:81",
                                      "type": ""
                                    }
                                  ]
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "name": "dstPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "3380:6:81"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "lastValue",
                                            "nodeType": "YulIdentifier",
                                            "src": "3392:9:81"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "3419:1:81",
                                                            "type": "",
                                                            "value": "3"
                                                          },
                                                          {
                                                            "name": "newLen",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "3422:6:81"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "shl",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "3415:3:81"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "3415:14:81"
                                                      },
                                                      {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "3431:3:81",
                                                        "type": "",
                                                        "value": "248"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "and",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "3411:3:81"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3411:24:81"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "3441:1:81",
                                                        "type": "",
                                                        "value": "0"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "not",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "3437:3:81"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3437:6:81"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3407:3:81"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3407:37:81"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "3403:3:81"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3403:42:81"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "3388:3:81"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3388:58:81"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sstore",
                                      "nodeType": "YulIdentifier",
                                      "src": "3373:6:81"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3373:74:81"
                                  },
                                  "nodeType": "YulExpressionStatement",
                                  "src": "3373:74:81"
                                }
                              ]
                            },
                            "condition": {
                              "arguments": [
                                {
                                  "name": "loopEnd",
                                  "nodeType": "YulIdentifier",
                                  "src": "3266:7:81"
                                },
                                {
                                  "name": "newLen",
                                  "nodeType": "YulIdentifier",
                                  "src": "3275:6:81"
                                }
                              ],
                              "functionName": {
                                "name": "lt",
                                "nodeType": "YulIdentifier",
                                "src": "3263:2:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "3263:19:81"
                            },
                            "nodeType": "YulIf",
                            "src": "3260:201:81"
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "name": "slot",
                                  "nodeType": "YulIdentifier",
                                  "src": "3481:4:81"
                                },
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3495:1:81",
                                          "type": "",
                                          "value": "1"
                                        },
                                        {
                                          "name": "newLen",
                                          "nodeType": "YulIdentifier",
                                          "src": "3498:6:81"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "shl",
                                        "nodeType": "YulIdentifier",
                                        "src": "3491:3:81"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3491:14:81"
                                    },
                                    {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "3507:1:81",
                                      "type": "",
                                      "value": "1"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "3487:3:81"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "3487:22:81"
                                }
                              ],
                              "functionName": {
                                "name": "sstore",
                                "nodeType": "YulIdentifier",
                                "src": "3474:6:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "3474:36:81"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "3474:36:81"
                          }
                        ]
                      },
                      "nodeType": "YulCase",
                      "src": "2857:663:81",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2862:1:81",
                        "type": "",
                        "value": "1"
                      }
                    },
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "3537:234:81",
                        "statements": [
                          {
                            "nodeType": "YulVariableDeclaration",
                            "src": "3551:14:81",
                            "value": {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3564:1:81",
                              "type": "",
                              "value": "0"
                            },
                            "variables": [
                              {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "3555:5:81",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "body": {
                              "nodeType": "YulBlock",
                              "src": "3600:67:81",
                              "statements": [
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "3618:35:81",
                                  "value": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "src",
                                            "nodeType": "YulIdentifier",
                                            "src": "3637:3:81"
                                          },
                                          {
                                            "name": "srcOffset",
                                            "nodeType": "YulIdentifier",
                                            "src": "3642:9:81"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "3633:3:81"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3633:19:81"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "3627:5:81"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3627:26:81"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "value",
                                      "nodeType": "YulIdentifier",
                                      "src": "3618:5:81"
                                    }
                                  ]
                                }
                              ]
                            },
                            "condition": {
                              "name": "newLen",
                              "nodeType": "YulIdentifier",
                              "src": "3581:6:81"
                            },
                            "nodeType": "YulIf",
                            "src": "3578:89:81"
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "name": "slot",
                                  "nodeType": "YulIdentifier",
                                  "src": "3687:4:81"
                                },
                                {
                                  "arguments": [
                                    {
                                      "name": "value",
                                      "nodeType": "YulIdentifier",
                                      "src": "3746:5:81"
                                    },
                                    {
                                      "name": "newLen",
                                      "nodeType": "YulIdentifier",
                                      "src": "3753:6:81"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "extract_used_part_and_set_length_of_short_byte_array",
                                    "nodeType": "YulIdentifier",
                                    "src": "3693:52:81"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "3693:67:81"
                                }
                              ],
                              "functionName": {
                                "name": "sstore",
                                "nodeType": "YulIdentifier",
                                "src": "3680:6:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "3680:81:81"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "3680:81:81"
                          }
                        ]
                      },
                      "nodeType": "YulCase",
                      "src": "3529:242:81",
                      "value": "default"
                    }
                  ],
                  "expression": {
                    "arguments": [
                      {
                        "name": "newLen",
                        "nodeType": "YulIdentifier",
                        "src": "2837:6:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2845:2:81",
                        "type": "",
                        "value": "31"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "2834:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2834:14:81"
                  },
                  "nodeType": "YulSwitch",
                  "src": "2827:944:81"
                }
              ]
            },
            "name": "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "slot",
                "nodeType": "YulTypedName",
                "src": "2506:4:81",
                "type": ""
              },
              {
                "name": "src",
                "nodeType": "YulTypedName",
                "src": "2512:3:81",
                "type": ""
              }
            ],
            "src": "2425:1352:81"
          }
        ]
      },
      "contents": "{\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_tuple_t_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        let _1 := 32\n        if slt(sub(dataEnd, headStart), _1) { revert(0, 0) }\n        let offset := mload(headStart)\n        let _2 := sub(shl(64, 1), 1)\n        if gt(offset, _2) { revert(0, 0) }\n        let _3 := add(headStart, offset)\n        if iszero(slt(add(_3, 0x1f), dataEnd)) { revert(0, 0) }\n        let _4 := mload(_3)\n        if gt(_4, _2) { panic_error_0x41() }\n        let _5 := not(31)\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_4, 0x1f), _5), 63), _5))\n        if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _4)\n        if gt(add(add(_3, _4), _1), dataEnd) { revert(0, 0) }\n        let i := 0\n        for { } lt(i, _4) { i := add(i, _1) }\n        {\n            mstore(add(add(memPtr, i), _1), mload(add(add(_3, i), _1)))\n        }\n        mstore(add(add(memPtr, _4), _1), 0)\n        value0 := memPtr\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function array_dataslot_string_storage(ptr) -> data\n    {\n        mstore(0, ptr)\n        data := keccak256(0, 0x20)\n    }\n    function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n    {\n        if gt(len, 31)\n        {\n            let _1 := 0\n            mstore(_1, array)\n            let data := keccak256(_1, 0x20)\n            let deleteStart := add(data, shr(5, add(startIndex, 31)))\n            if lt(startIndex, 0x20) { deleteStart := data }\n            let _2 := add(data, shr(5, add(len, 31)))\n            let start := deleteStart\n            for { } lt(start, _2) { start := add(start, 1) }\n            { sstore(start, _1) }\n        }\n    }\n    function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n    {\n        used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n    }\n    function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n    {\n        let newLen := mload(src)\n        if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n        clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n        let srcOffset := 0\n        let srcOffset_1 := 0x20\n        srcOffset := srcOffset_1\n        switch gt(newLen, 31)\n        case 1 {\n            let loopEnd := and(newLen, not(31))\n            let dstPtr := array_dataslot_string_storage(slot)\n            let i := 0\n            for { } lt(i, loopEnd) { i := add(i, srcOffset_1) }\n            {\n                sstore(dstPtr, mload(add(src, srcOffset)))\n                dstPtr := add(dstPtr, 1)\n                srcOffset := add(srcOffset, srcOffset_1)\n            }\n            if lt(loopEnd, newLen)\n            {\n                let lastValue := mload(add(src, srcOffset))\n                sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n            }\n            sstore(slot, add(shl(1, newLen), 1))\n        }\n        default {\n            let value := 0\n            if newLen\n            {\n                value := mload(add(src, srcOffset))\n            }\n            sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n        }\n    }\n}",
      "id": 81,
      "language": "Yul",
      "name": "#utility.yul"
    }
  ],
  "deployedGeneratedSources": [
    {
      "ast": {
        "nodeType": "YulBlock",
        "src": "0:18751:81",
        "statements": [
          {
            "nodeType": "YulBlock",
            "src": "6:3:81",
            "statements": []
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "63:124:81",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "73:29:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "95:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "82:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "82:20:81"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nodeType": "YulIdentifier",
                      "src": "73:5:81"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "165:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "174:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "177:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "167:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "167:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "167:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "124:5:81"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "135:5:81"
                              },
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "150:3:81",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "155:1:81",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "146:3:81"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "146:11:81"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "159:1:81",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "142:3:81"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "142:19:81"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "131:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "131:31:81"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "121:2:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "121:42:81"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "114:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "114:50:81"
                  },
                  "nodeType": "YulIf",
                  "src": "111:70:81"
                }
              ]
            },
            "name": "abi_decode_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "42:6:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "53:5:81",
                "type": ""
              }
            ],
            "src": "14:173:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "279:167:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "325:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "334:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "337:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "327:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "327:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "327:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "300:7:81"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "309:9:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "296:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "296:23:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "321:2:81",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "292:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "292:32:81"
                  },
                  "nodeType": "YulIf",
                  "src": "289:52:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "350:39:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "379:9:81"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_address",
                      "nodeType": "YulIdentifier",
                      "src": "360:18:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "360:29:81"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "350:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "398:42:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "425:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "436:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "421:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "421:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "408:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "408:32:81"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "398:6:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "237:9:81",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "248:7:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "260:6:81",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "268:6:81",
                "type": ""
              }
            ],
            "src": "192:254:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "552:76:81",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "562:26:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "574:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "585:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "570:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "570:18:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "562:4:81"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "604:9:81"
                      },
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "615:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "597:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "597:25:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "597:25:81"
                }
              ]
            },
            "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "521:9:81",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "532:6:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "543:4:81",
                "type": ""
              }
            ],
            "src": "451:177:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "677:87:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "742:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "751:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "754:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "744:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "744:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "744:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "700:5:81"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "711:5:81"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "722:3:81",
                                    "type": "",
                                    "value": "224"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "727:10:81",
                                    "type": "",
                                    "value": "0xffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "718:3:81"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "718:20:81"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "707:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "707:32:81"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "697:2:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "697:43:81"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "690:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "690:51:81"
                  },
                  "nodeType": "YulIf",
                  "src": "687:71:81"
                }
              ]
            },
            "name": "validator_revert_bytes4",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "666:5:81",
                "type": ""
              }
            ],
            "src": "633:131:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "838:176:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "884:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "893:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "896:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "886:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "886:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "886:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "859:7:81"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "868:9:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "855:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "855:23:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "880:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "851:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "851:32:81"
                  },
                  "nodeType": "YulIf",
                  "src": "848:52:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "909:36:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "935:9:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "922:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "922:23:81"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "913:5:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "978:5:81"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_bytes4",
                      "nodeType": "YulIdentifier",
                      "src": "954:23:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "954:30:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "954:30:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "993:15:81",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "1003:5:81"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "993:6:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes4",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "804:9:81",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "815:7:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "827:6:81",
                "type": ""
              }
            ],
            "src": "769:245:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1114:92:81",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "1124:26:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "1136:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1147:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "1132:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1132:18:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "1124:4:81"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "1166:9:81"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "value0",
                                "nodeType": "YulIdentifier",
                                "src": "1191:6:81"
                              }
                            ],
                            "functionName": {
                              "name": "iszero",
                              "nodeType": "YulIdentifier",
                              "src": "1184:6:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1184:14:81"
                          }
                        ],
                        "functionName": {
                          "name": "iszero",
                          "nodeType": "YulIdentifier",
                          "src": "1177:6:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1177:22:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "1159:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1159:41:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1159:41:81"
                }
              ]
            },
            "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "1083:9:81",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "1094:6:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "1105:4:81",
                "type": ""
              }
            ],
            "src": "1019:187:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1261:373:81",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1271:26:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "1291:5:81"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "1285:5:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1285:12:81"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "1275:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "1313:3:81"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "1318:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "1306:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1306:19:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1306:19:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1334:10:81",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "1343:1:81",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "i",
                      "nodeType": "YulTypedName",
                      "src": "1338:1:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1405:110:81",
                    "statements": [
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "1419:14:81",
                        "value": {
                          "kind": "number",
                          "nodeType": "YulLiteral",
                          "src": "1429:4:81",
                          "type": "",
                          "value": "0x20"
                        },
                        "variables": [
                          {
                            "name": "_1",
                            "nodeType": "YulTypedName",
                            "src": "1423:2:81",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "pos",
                                      "nodeType": "YulIdentifier",
                                      "src": "1461:3:81"
                                    },
                                    {
                                      "name": "i",
                                      "nodeType": "YulIdentifier",
                                      "src": "1466:1:81"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "1457:3:81"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "1457:11:81"
                                },
                                {
                                  "name": "_1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1470:2:81"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "1453:3:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "1453:20:81"
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "name": "value",
                                          "nodeType": "YulIdentifier",
                                          "src": "1489:5:81"
                                        },
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "1496:1:81"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "1485:3:81"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1485:13:81"
                                    },
                                    {
                                      "name": "_1",
                                      "nodeType": "YulIdentifier",
                                      "src": "1500:2:81"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "1481:3:81"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "1481:22:81"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nodeType": "YulIdentifier",
                                "src": "1475:5:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "1475:29:81"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "1446:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1446:59:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1446:59:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "1364:1:81"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "1367:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "1361:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1361:13:81"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "1375:21:81",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "1377:17:81",
                        "value": {
                          "arguments": [
                            {
                              "name": "i",
                              "nodeType": "YulIdentifier",
                              "src": "1386:1:81"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1389:4:81",
                              "type": "",
                              "value": "0x20"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "1382:3:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1382:12:81"
                        },
                        "variableNames": [
                          {
                            "name": "i",
                            "nodeType": "YulIdentifier",
                            "src": "1377:1:81"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "1357:3:81",
                    "statements": []
                  },
                  "src": "1353:162:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "1539:3:81"
                              },
                              {
                                "name": "length",
                                "nodeType": "YulIdentifier",
                                "src": "1544:6:81"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "1535:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1535:16:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1553:4:81",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1531:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1531:27:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1560:1:81",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "1524:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1524:38:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1524:38:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1571:57:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "1586:3:81"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1599:6:81"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1607:2:81",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1595:3:81"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1595:15:81"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1616:2:81",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "1612:3:81"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1612:7:81"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "1591:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1591:29:81"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1582:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1582:39:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1623:4:81",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "1578:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1578:50:81"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "1571:3:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_string",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "1238:5:81",
                "type": ""
              },
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "1245:3:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "1253:3:81",
                "type": ""
              }
            ],
            "src": "1211:423:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1760:99:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "1777:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1788:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "1770:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1770:21:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1770:21:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1800:53:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "1826:6:81"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1838:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1849:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1834:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1834:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_string",
                      "nodeType": "YulIdentifier",
                      "src": "1808:17:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1808:45:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "1800:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "1729:9:81",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "1740:6:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "1751:4:81",
                "type": ""
              }
            ],
            "src": "1639:220:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1934:110:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1980:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1989:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1992:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1982:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1982:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1982:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "1955:7:81"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1964:9:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "1951:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1951:23:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1976:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "1947:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1947:32:81"
                  },
                  "nodeType": "YulIf",
                  "src": "1944:52:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2005:33:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "2028:9:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "2015:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2015:23:81"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "2005:6:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "1900:9:81",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "1911:7:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "1923:6:81",
                "type": ""
              }
            ],
            "src": "1864:180:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2121:275:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2170:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2179:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2182:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2172:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2172:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2172:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "2149:6:81"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2157:4:81",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "2145:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "2145:17:81"
                          },
                          {
                            "name": "end",
                            "nodeType": "YulIdentifier",
                            "src": "2164:3:81"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "2141:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2141:27:81"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "2134:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2134:35:81"
                  },
                  "nodeType": "YulIf",
                  "src": "2131:55:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2195:30:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "2218:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "2205:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2205:20:81"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nodeType": "YulIdentifier",
                      "src": "2195:6:81"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2268:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2277:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2280:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2270:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2270:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2270:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "2240:6:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2248:18:81",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "2237:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2237:30:81"
                  },
                  "nodeType": "YulIf",
                  "src": "2234:50:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2293:29:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "2309:6:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2317:4:81",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "2305:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2305:17:81"
                  },
                  "variableNames": [
                    {
                      "name": "arrayPos",
                      "nodeType": "YulIdentifier",
                      "src": "2293:8:81"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2374:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2383:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2386:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2376:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2376:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2376:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "2345:6:81"
                              },
                              {
                                "name": "length",
                                "nodeType": "YulIdentifier",
                                "src": "2353:6:81"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "2341:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "2341:19:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2362:4:81",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2337:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2337:30:81"
                      },
                      {
                        "name": "end",
                        "nodeType": "YulIdentifier",
                        "src": "2369:3:81"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "2334:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2334:39:81"
                  },
                  "nodeType": "YulIf",
                  "src": "2331:59:81"
                }
              ]
            },
            "name": "abi_decode_bytes_calldata",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "2084:6:81",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "2092:3:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "arrayPos",
                "nodeType": "YulTypedName",
                "src": "2100:8:81",
                "type": ""
              },
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "2110:6:81",
                "type": ""
              }
            ],
            "src": "2049:347:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2541:480:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2588:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2597:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2600:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2590:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2590:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2590:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "2562:7:81"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2571:9:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "2558:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2558:23:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2583:3:81",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "2554:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2554:33:81"
                  },
                  "nodeType": "YulIf",
                  "src": "2551:53:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2613:39:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "2642:9:81"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_address",
                      "nodeType": "YulIdentifier",
                      "src": "2623:18:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2623:29:81"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "2613:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2661:42:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2688:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2699:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2684:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2684:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "2671:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2671:32:81"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "2661:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2712:42:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2739:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2750:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2735:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2735:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "2722:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2722:32:81"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "2712:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "2763:46:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2794:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2805:2:81",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2790:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2790:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "2777:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2777:32:81"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "2767:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2852:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2861:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2864:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2854:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2854:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2854:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "2824:6:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2832:18:81",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "2821:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2821:30:81"
                  },
                  "nodeType": "YulIf",
                  "src": "2818:50:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "2877:84:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2933:9:81"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "2944:6:81"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2929:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2929:22:81"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "2953:7:81"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes_calldata",
                      "nodeType": "YulIdentifier",
                      "src": "2903:25:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2903:58:81"
                  },
                  "variables": [
                    {
                      "name": "value3_1",
                      "nodeType": "YulTypedName",
                      "src": "2881:8:81",
                      "type": ""
                    },
                    {
                      "name": "value4_1",
                      "nodeType": "YulTypedName",
                      "src": "2891:8:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2970:18:81",
                  "value": {
                    "name": "value3_1",
                    "nodeType": "YulIdentifier",
                    "src": "2980:8:81"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nodeType": "YulIdentifier",
                      "src": "2970:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2997:18:81",
                  "value": {
                    "name": "value4_1",
                    "nodeType": "YulIdentifier",
                    "src": "3007:8:81"
                  },
                  "variableNames": [
                    {
                      "name": "value4",
                      "nodeType": "YulIdentifier",
                      "src": "2997:6:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_uint256t_uint256t_bytes_calldata_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "2475:9:81",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "2486:7:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "2498:6:81",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "2506:6:81",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "2514:6:81",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "2522:6:81",
                "type": ""
              },
              {
                "name": "value4",
                "nodeType": "YulTypedName",
                "src": "2530:6:81",
                "type": ""
              }
            ],
            "src": "2401:620:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3058:95:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3075:1:81",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3082:3:81",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3087:10:81",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "3078:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3078:20:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "3068:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3068:31:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3068:31:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3115:1:81",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3118:4:81",
                        "type": "",
                        "value": "0x41"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "3108:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3108:15:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3108:15:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3139:1:81",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3142:4:81",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nodeType": "YulIdentifier",
                      "src": "3132:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3132:15:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3132:15:81"
                }
              ]
            },
            "name": "panic_error_0x41",
            "nodeType": "YulFunctionDefinition",
            "src": "3026:127:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3205:202:81",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3215:58:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nodeType": "YulIdentifier",
                        "src": "3237:6:81"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "size",
                                "nodeType": "YulIdentifier",
                                "src": "3253:4:81"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "3259:2:81",
                                "type": "",
                                "value": "31"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "3249:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "3249:13:81"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "3268:2:81",
                                "type": "",
                                "value": "31"
                              }
                            ],
                            "functionName": {
                              "name": "not",
                              "nodeType": "YulIdentifier",
                              "src": "3264:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "3264:7:81"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "3245:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3245:27:81"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "3233:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3233:40:81"
                  },
                  "variables": [
                    {
                      "name": "newFreePtr",
                      "nodeType": "YulTypedName",
                      "src": "3219:10:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3348:22:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nodeType": "YulIdentifier",
                            "src": "3350:16:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3350:18:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3350:18:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nodeType": "YulIdentifier",
                            "src": "3291:10:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3303:18:81",
                            "type": "",
                            "value": "0xffffffffffffffff"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "3288:2:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3288:34:81"
                      },
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nodeType": "YulIdentifier",
                            "src": "3327:10:81"
                          },
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "3339:6:81"
                          }
                        ],
                        "functionName": {
                          "name": "lt",
                          "nodeType": "YulIdentifier",
                          "src": "3324:2:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3324:22:81"
                      }
                    ],
                    "functionName": {
                      "name": "or",
                      "nodeType": "YulIdentifier",
                      "src": "3285:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3285:62:81"
                  },
                  "nodeType": "YulIf",
                  "src": "3282:88:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3386:2:81",
                        "type": "",
                        "value": "64"
                      },
                      {
                        "name": "newFreePtr",
                        "nodeType": "YulIdentifier",
                        "src": "3390:10:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "3379:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3379:22:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3379:22:81"
                }
              ]
            },
            "name": "finalize_allocation",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "memPtr",
                "nodeType": "YulTypedName",
                "src": "3187:6:81",
                "type": ""
              },
              {
                "name": "size",
                "nodeType": "YulTypedName",
                "src": "3195:4:81",
                "type": ""
              }
            ],
            "src": "3158:249:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3481:114:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3525:22:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nodeType": "YulIdentifier",
                            "src": "3527:16:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3527:18:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3527:18:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "3497:6:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3505:18:81",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "3494:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3494:30:81"
                  },
                  "nodeType": "YulIf",
                  "src": "3491:56:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3556:33:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3572:1:81",
                            "type": "",
                            "value": "5"
                          },
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "3575:6:81"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "3568:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3568:14:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3584:4:81",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "3564:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3564:25:81"
                  },
                  "variableNames": [
                    {
                      "name": "size",
                      "nodeType": "YulIdentifier",
                      "src": "3556:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "array_allocation_size_array_uint256_dyn",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "3461:6:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "size",
                "nodeType": "YulTypedName",
                "src": "3472:4:81",
                "type": ""
              }
            ],
            "src": "3412:183:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3664:660:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3713:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3722:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3725:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "3715:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3715:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3715:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "3692:6:81"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "3700:4:81",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "3688:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "3688:17:81"
                          },
                          {
                            "name": "end",
                            "nodeType": "YulIdentifier",
                            "src": "3707:3:81"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "3684:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3684:27:81"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "3677:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3677:35:81"
                  },
                  "nodeType": "YulIf",
                  "src": "3674:55:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3738:30:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "3761:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "3748:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3748:20:81"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "3742:2:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3777:14:81",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "3787:4:81",
                    "type": "",
                    "value": "0x20"
                  },
                  "variables": [
                    {
                      "name": "_2",
                      "nodeType": "YulTypedName",
                      "src": "3781:2:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3800:53:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "3850:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "array_allocation_size_array_uint256_dyn",
                      "nodeType": "YulIdentifier",
                      "src": "3810:39:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3810:43:81"
                  },
                  "variables": [
                    {
                      "name": "_3",
                      "nodeType": "YulTypedName",
                      "src": "3804:2:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3862:23:81",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3882:2:81",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "3876:5:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3876:9:81"
                  },
                  "variables": [
                    {
                      "name": "memPtr",
                      "nodeType": "YulTypedName",
                      "src": "3866:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nodeType": "YulIdentifier",
                        "src": "3914:6:81"
                      },
                      {
                        "name": "_3",
                        "nodeType": "YulIdentifier",
                        "src": "3922:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "finalize_allocation",
                      "nodeType": "YulIdentifier",
                      "src": "3894:19:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3894:31:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3894:31:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3934:17:81",
                  "value": {
                    "name": "memPtr",
                    "nodeType": "YulIdentifier",
                    "src": "3945:6:81"
                  },
                  "variables": [
                    {
                      "name": "dst",
                      "nodeType": "YulTypedName",
                      "src": "3938:3:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nodeType": "YulIdentifier",
                        "src": "3967:6:81"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "3975:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "3960:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3960:18:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3960:18:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3987:22:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nodeType": "YulIdentifier",
                        "src": "3998:6:81"
                      },
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "4006:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "3994:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3994:15:81"
                  },
                  "variableNames": [
                    {
                      "name": "dst",
                      "nodeType": "YulIdentifier",
                      "src": "3987:3:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4018:46:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "4040:6:81"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4052:1:81",
                                "type": "",
                                "value": "5"
                              },
                              {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "4055:2:81"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nodeType": "YulIdentifier",
                              "src": "4048:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "4048:10:81"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4036:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4036:23:81"
                      },
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "4061:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "4032:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4032:32:81"
                  },
                  "variables": [
                    {
                      "name": "srcEnd",
                      "nodeType": "YulTypedName",
                      "src": "4022:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4092:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4101:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4104:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "4094:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4094:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4094:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "srcEnd",
                        "nodeType": "YulIdentifier",
                        "src": "4079:6:81"
                      },
                      {
                        "name": "end",
                        "nodeType": "YulIdentifier",
                        "src": "4087:3:81"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "4076:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4076:15:81"
                  },
                  "nodeType": "YulIf",
                  "src": "4073:35:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4117:26:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "4132:6:81"
                      },
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "4140:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "4128:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4128:15:81"
                  },
                  "variables": [
                    {
                      "name": "src",
                      "nodeType": "YulTypedName",
                      "src": "4121:3:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4208:86:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "dst",
                              "nodeType": "YulIdentifier",
                              "src": "4229:3:81"
                            },
                            {
                              "arguments": [
                                {
                                  "name": "src",
                                  "nodeType": "YulIdentifier",
                                  "src": "4247:3:81"
                                }
                              ],
                              "functionName": {
                                "name": "calldataload",
                                "nodeType": "YulIdentifier",
                                "src": "4234:12:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "4234:17:81"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "4222:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4222:30:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4222:30:81"
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "4265:19:81",
                        "value": {
                          "arguments": [
                            {
                              "name": "dst",
                              "nodeType": "YulIdentifier",
                              "src": "4276:3:81"
                            },
                            {
                              "name": "_2",
                              "nodeType": "YulIdentifier",
                              "src": "4281:2:81"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "4272:3:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4272:12:81"
                        },
                        "variableNames": [
                          {
                            "name": "dst",
                            "nodeType": "YulIdentifier",
                            "src": "4265:3:81"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "src",
                        "nodeType": "YulIdentifier",
                        "src": "4163:3:81"
                      },
                      {
                        "name": "srcEnd",
                        "nodeType": "YulIdentifier",
                        "src": "4168:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "4160:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4160:15:81"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "4176:23:81",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "4178:19:81",
                        "value": {
                          "arguments": [
                            {
                              "name": "src",
                              "nodeType": "YulIdentifier",
                              "src": "4189:3:81"
                            },
                            {
                              "name": "_2",
                              "nodeType": "YulIdentifier",
                              "src": "4194:2:81"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "4185:3:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4185:12:81"
                        },
                        "variableNames": [
                          {
                            "name": "src",
                            "nodeType": "YulIdentifier",
                            "src": "4178:3:81"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "4156:3:81",
                    "statements": []
                  },
                  "src": "4152:142:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4303:15:81",
                  "value": {
                    "name": "memPtr",
                    "nodeType": "YulIdentifier",
                    "src": "4312:6:81"
                  },
                  "variableNames": [
                    {
                      "name": "array",
                      "nodeType": "YulIdentifier",
                      "src": "4303:5:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_array_uint256_dyn",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "3638:6:81",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "3646:3:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "array",
                "nodeType": "YulTypedName",
                "src": "3654:5:81",
                "type": ""
              }
            ],
            "src": "3600:724:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4381:503:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4430:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4439:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4442:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "4432:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4432:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4432:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "4409:6:81"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4417:4:81",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "4405:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "4405:17:81"
                          },
                          {
                            "name": "end",
                            "nodeType": "YulIdentifier",
                            "src": "4424:3:81"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "4401:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4401:27:81"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "4394:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4394:35:81"
                  },
                  "nodeType": "YulIf",
                  "src": "4391:55:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4455:30:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "4478:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "4465:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4465:20:81"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "4459:2:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4524:22:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nodeType": "YulIdentifier",
                            "src": "4526:16:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4526:18:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4526:18:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "4500:2:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4504:18:81",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "4497:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4497:26:81"
                  },
                  "nodeType": "YulIf",
                  "src": "4494:52:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4555:23:81",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4575:2:81",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "4569:5:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4569:9:81"
                  },
                  "variables": [
                    {
                      "name": "memPtr",
                      "nodeType": "YulTypedName",
                      "src": "4559:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nodeType": "YulIdentifier",
                        "src": "4607:6:81"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4627:2:81"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4631:4:81",
                                    "type": "",
                                    "value": "0x1f"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4623:3:81"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4623:13:81"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4642:2:81",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "4638:3:81"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4638:7:81"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "4619:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "4619:27:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4648:4:81",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4615:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4615:38:81"
                      }
                    ],
                    "functionName": {
                      "name": "finalize_allocation",
                      "nodeType": "YulIdentifier",
                      "src": "4587:19:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4587:67:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4587:67:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nodeType": "YulIdentifier",
                        "src": "4670:6:81"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "4678:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "4663:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4663:18:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4663:18:81"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4729:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4738:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4741:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "4731:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4731:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4731:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "4704:6:81"
                              },
                              {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "4712:2:81"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "4700:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "4700:15:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4717:4:81",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4696:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4696:26:81"
                      },
                      {
                        "name": "end",
                        "nodeType": "YulIdentifier",
                        "src": "4724:3:81"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "4693:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4693:35:81"
                  },
                  "nodeType": "YulIf",
                  "src": "4690:55:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "4771:6:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4779:4:81",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4767:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4767:17:81"
                      },
                      {
                        "arguments": [
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "4790:6:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4798:4:81",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4786:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4786:17:81"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "4805:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldatacopy",
                      "nodeType": "YulIdentifier",
                      "src": "4754:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4754:54:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4754:54:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "4832:6:81"
                              },
                              {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "4840:2:81"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "4828:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "4828:15:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4845:4:81",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4824:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4824:26:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4852:1:81",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "4817:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4817:37:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4817:37:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4863:15:81",
                  "value": {
                    "name": "memPtr",
                    "nodeType": "YulIdentifier",
                    "src": "4872:6:81"
                  },
                  "variableNames": [
                    {
                      "name": "array",
                      "nodeType": "YulIdentifier",
                      "src": "4863:5:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_bytes",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "4355:6:81",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "4363:3:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "array",
                "nodeType": "YulTypedName",
                "src": "4371:5:81",
                "type": ""
              }
            ],
            "src": "4329:555:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "5086:746:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "5133:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "5142:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "5145:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "5135:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5135:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "5135:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "5107:7:81"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5116:9:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "5103:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5103:23:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5128:3:81",
                        "type": "",
                        "value": "160"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "5099:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5099:33:81"
                  },
                  "nodeType": "YulIf",
                  "src": "5096:53:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5158:39:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "5187:9:81"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_address",
                      "nodeType": "YulIdentifier",
                      "src": "5168:18:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5168:29:81"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "5158:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5206:48:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5239:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5250:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5235:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5235:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_address",
                      "nodeType": "YulIdentifier",
                      "src": "5216:18:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5216:38:81"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "5206:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5263:46:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5294:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5305:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5290:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5290:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "5277:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5277:32:81"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "5267:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5318:28:81",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "5328:18:81",
                    "type": "",
                    "value": "0xffffffffffffffff"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "5322:2:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "5373:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "5382:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "5385:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "5375:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5375:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "5375:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "5361:6:81"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "5369:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "5358:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5358:14:81"
                  },
                  "nodeType": "YulIf",
                  "src": "5355:34:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5398:71:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5441:9:81"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "5452:6:81"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5437:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5437:22:81"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "5461:7:81"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_array_uint256_dyn",
                      "nodeType": "YulIdentifier",
                      "src": "5408:28:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5408:61:81"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "5398:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5478:48:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5511:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5522:2:81",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5507:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5507:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "5494:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5494:32:81"
                  },
                  "variables": [
                    {
                      "name": "offset_1",
                      "nodeType": "YulTypedName",
                      "src": "5482:8:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "5555:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "5564:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "5567:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "5557:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5557:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "5557:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_1",
                        "nodeType": "YulIdentifier",
                        "src": "5541:8:81"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "5551:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "5538:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5538:16:81"
                  },
                  "nodeType": "YulIf",
                  "src": "5535:36:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5580:73:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5623:9:81"
                          },
                          {
                            "name": "offset_1",
                            "nodeType": "YulIdentifier",
                            "src": "5634:8:81"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5619:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5619:24:81"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "5645:7:81"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_array_uint256_dyn",
                      "nodeType": "YulIdentifier",
                      "src": "5590:28:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5590:63:81"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nodeType": "YulIdentifier",
                      "src": "5580:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5662:49:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5695:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5706:3:81",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5691:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5691:19:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "5678:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5678:33:81"
                  },
                  "variables": [
                    {
                      "name": "offset_2",
                      "nodeType": "YulTypedName",
                      "src": "5666:8:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "5740:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "5749:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "5752:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "5742:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5742:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "5742:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_2",
                        "nodeType": "YulIdentifier",
                        "src": "5726:8:81"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "5736:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "5723:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5723:16:81"
                  },
                  "nodeType": "YulIf",
                  "src": "5720:36:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5765:61:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5796:9:81"
                          },
                          {
                            "name": "offset_2",
                            "nodeType": "YulIdentifier",
                            "src": "5807:8:81"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5792:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5792:24:81"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "5818:7:81"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "5775:16:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5775:51:81"
                  },
                  "variableNames": [
                    {
                      "name": "value4",
                      "nodeType": "YulIdentifier",
                      "src": "5765:6:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "5020:9:81",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "5031:7:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "5043:6:81",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "5051:6:81",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "5059:6:81",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "5067:6:81",
                "type": ""
              },
              {
                "name": "value4",
                "nodeType": "YulTypedName",
                "src": "5075:6:81",
                "type": ""
              }
            ],
            "src": "4889:943:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "5974:1071:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "6020:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6029:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6032:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "6022:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6022:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "6022:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "5995:7:81"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6004:9:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "5991:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5991:23:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6016:2:81",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "5987:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5987:32:81"
                  },
                  "nodeType": "YulIf",
                  "src": "5984:52:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6045:37:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "6072:9:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "6059:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6059:23:81"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "6049:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6091:28:81",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "6101:18:81",
                    "type": "",
                    "value": "0xffffffffffffffff"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "6095:2:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "6146:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6155:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6158:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "6148:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6148:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "6148:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "6134:6:81"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "6142:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "6131:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6131:14:81"
                  },
                  "nodeType": "YulIf",
                  "src": "6128:34:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6171:32:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "6185:9:81"
                      },
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "6196:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "6181:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6181:22:81"
                  },
                  "variables": [
                    {
                      "name": "_2",
                      "nodeType": "YulTypedName",
                      "src": "6175:2:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "6251:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6260:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6263:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "6253:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6253:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "6253:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "_2",
                                "nodeType": "YulIdentifier",
                                "src": "6230:2:81"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6234:4:81",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "6226:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "6226:13:81"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "6241:7:81"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "6222:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6222:27:81"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "6215:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6215:35:81"
                  },
                  "nodeType": "YulIf",
                  "src": "6212:55:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6276:26:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "6299:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "6286:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6286:16:81"
                  },
                  "variables": [
                    {
                      "name": "_3",
                      "nodeType": "YulTypedName",
                      "src": "6280:2:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6311:14:81",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "6321:4:81",
                    "type": "",
                    "value": "0x20"
                  },
                  "variables": [
                    {
                      "name": "_4",
                      "nodeType": "YulTypedName",
                      "src": "6315:2:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6334:53:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "_3",
                        "nodeType": "YulIdentifier",
                        "src": "6384:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "array_allocation_size_array_uint256_dyn",
                      "nodeType": "YulIdentifier",
                      "src": "6344:39:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6344:43:81"
                  },
                  "variables": [
                    {
                      "name": "_5",
                      "nodeType": "YulTypedName",
                      "src": "6338:2:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6396:23:81",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6416:2:81",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "6410:5:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6410:9:81"
                  },
                  "variables": [
                    {
                      "name": "memPtr",
                      "nodeType": "YulTypedName",
                      "src": "6400:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nodeType": "YulIdentifier",
                        "src": "6448:6:81"
                      },
                      {
                        "name": "_5",
                        "nodeType": "YulIdentifier",
                        "src": "6456:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "finalize_allocation",
                      "nodeType": "YulIdentifier",
                      "src": "6428:19:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6428:31:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6428:31:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6468:17:81",
                  "value": {
                    "name": "memPtr",
                    "nodeType": "YulIdentifier",
                    "src": "6479:6:81"
                  },
                  "variables": [
                    {
                      "name": "dst",
                      "nodeType": "YulTypedName",
                      "src": "6472:3:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nodeType": "YulIdentifier",
                        "src": "6501:6:81"
                      },
                      {
                        "name": "_3",
                        "nodeType": "YulIdentifier",
                        "src": "6509:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "6494:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6494:18:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6494:18:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6521:22:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nodeType": "YulIdentifier",
                        "src": "6532:6:81"
                      },
                      {
                        "name": "_4",
                        "nodeType": "YulIdentifier",
                        "src": "6540:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "6528:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6528:15:81"
                  },
                  "variableNames": [
                    {
                      "name": "dst",
                      "nodeType": "YulIdentifier",
                      "src": "6521:3:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6552:42:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "_2",
                            "nodeType": "YulIdentifier",
                            "src": "6574:2:81"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6582:1:81",
                                "type": "",
                                "value": "5"
                              },
                              {
                                "name": "_3",
                                "nodeType": "YulIdentifier",
                                "src": "6585:2:81"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nodeType": "YulIdentifier",
                              "src": "6578:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "6578:10:81"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6570:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6570:19:81"
                      },
                      {
                        "name": "_4",
                        "nodeType": "YulIdentifier",
                        "src": "6591:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "6566:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6566:28:81"
                  },
                  "variables": [
                    {
                      "name": "srcEnd",
                      "nodeType": "YulTypedName",
                      "src": "6556:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "6626:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6635:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6638:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "6628:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6628:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "6628:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "srcEnd",
                        "nodeType": "YulIdentifier",
                        "src": "6609:6:81"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "6617:7:81"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "6606:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6606:19:81"
                  },
                  "nodeType": "YulIf",
                  "src": "6603:39:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6651:22:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "6666:2:81"
                      },
                      {
                        "name": "_4",
                        "nodeType": "YulIdentifier",
                        "src": "6670:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "6662:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6662:11:81"
                  },
                  "variables": [
                    {
                      "name": "src",
                      "nodeType": "YulTypedName",
                      "src": "6655:3:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "6738:92:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "dst",
                              "nodeType": "YulIdentifier",
                              "src": "6759:3:81"
                            },
                            {
                              "arguments": [
                                {
                                  "name": "src",
                                  "nodeType": "YulIdentifier",
                                  "src": "6783:3:81"
                                }
                              ],
                              "functionName": {
                                "name": "abi_decode_address",
                                "nodeType": "YulIdentifier",
                                "src": "6764:18:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "6764:23:81"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "6752:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6752:36:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "6752:36:81"
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "6801:19:81",
                        "value": {
                          "arguments": [
                            {
                              "name": "dst",
                              "nodeType": "YulIdentifier",
                              "src": "6812:3:81"
                            },
                            {
                              "name": "_4",
                              "nodeType": "YulIdentifier",
                              "src": "6817:2:81"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "6808:3:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6808:12:81"
                        },
                        "variableNames": [
                          {
                            "name": "dst",
                            "nodeType": "YulIdentifier",
                            "src": "6801:3:81"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "src",
                        "nodeType": "YulIdentifier",
                        "src": "6693:3:81"
                      },
                      {
                        "name": "srcEnd",
                        "nodeType": "YulIdentifier",
                        "src": "6698:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "6690:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6690:15:81"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "6706:23:81",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "6708:19:81",
                        "value": {
                          "arguments": [
                            {
                              "name": "src",
                              "nodeType": "YulIdentifier",
                              "src": "6719:3:81"
                            },
                            {
                              "name": "_4",
                              "nodeType": "YulIdentifier",
                              "src": "6724:2:81"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "6715:3:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6715:12:81"
                        },
                        "variableNames": [
                          {
                            "name": "src",
                            "nodeType": "YulIdentifier",
                            "src": "6708:3:81"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "6686:3:81",
                    "statements": []
                  },
                  "src": "6682:148:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6839:16:81",
                  "value": {
                    "name": "memPtr",
                    "nodeType": "YulIdentifier",
                    "src": "6849:6:81"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "6839:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6864:48:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6897:9:81"
                          },
                          {
                            "name": "_4",
                            "nodeType": "YulIdentifier",
                            "src": "6908:2:81"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6893:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6893:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "6880:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6880:32:81"
                  },
                  "variables": [
                    {
                      "name": "offset_1",
                      "nodeType": "YulTypedName",
                      "src": "6868:8:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "6941:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6950:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6953:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "6943:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6943:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "6943:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_1",
                        "nodeType": "YulIdentifier",
                        "src": "6927:8:81"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "6937:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "6924:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6924:16:81"
                  },
                  "nodeType": "YulIf",
                  "src": "6921:36:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6966:73:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7009:9:81"
                          },
                          {
                            "name": "offset_1",
                            "nodeType": "YulIdentifier",
                            "src": "7020:8:81"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7005:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7005:24:81"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "7031:7:81"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_array_uint256_dyn",
                      "nodeType": "YulIdentifier",
                      "src": "6976:28:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6976:63:81"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "6966:6:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "5932:9:81",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "5943:7:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "5955:6:81",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "5963:6:81",
                "type": ""
              }
            ],
            "src": "5837:1208:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "7111:374:81",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "7121:26:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "7141:5:81"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "7135:5:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7135:12:81"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "7125:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "7163:3:81"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "7168:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "7156:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7156:19:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7156:19:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "7184:14:81",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "7194:4:81",
                    "type": "",
                    "value": "0x20"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "7188:2:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7207:19:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "7218:3:81"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "7223:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "7214:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7214:12:81"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "7207:3:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "7235:28:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "7253:5:81"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "7260:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "7249:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7249:14:81"
                  },
                  "variables": [
                    {
                      "name": "srcPtr",
                      "nodeType": "YulTypedName",
                      "src": "7239:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "7272:10:81",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "7281:1:81",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "i",
                      "nodeType": "YulTypedName",
                      "src": "7276:1:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "7340:120:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "pos",
                              "nodeType": "YulIdentifier",
                              "src": "7361:3:81"
                            },
                            {
                              "arguments": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulIdentifier",
                                  "src": "7372:6:81"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nodeType": "YulIdentifier",
                                "src": "7366:5:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "7366:13:81"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "7354:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7354:26:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "7354:26:81"
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "7393:19:81",
                        "value": {
                          "arguments": [
                            {
                              "name": "pos",
                              "nodeType": "YulIdentifier",
                              "src": "7404:3:81"
                            },
                            {
                              "name": "_1",
                              "nodeType": "YulIdentifier",
                              "src": "7409:2:81"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "7400:3:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7400:12:81"
                        },
                        "variableNames": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "7393:3:81"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "7425:25:81",
                        "value": {
                          "arguments": [
                            {
                              "name": "srcPtr",
                              "nodeType": "YulIdentifier",
                              "src": "7439:6:81"
                            },
                            {
                              "name": "_1",
                              "nodeType": "YulIdentifier",
                              "src": "7447:2:81"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "7435:3:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7435:15:81"
                        },
                        "variableNames": [
                          {
                            "name": "srcPtr",
                            "nodeType": "YulIdentifier",
                            "src": "7425:6:81"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "7302:1:81"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "7305:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "7299:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7299:13:81"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "7313:18:81",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "7315:14:81",
                        "value": {
                          "arguments": [
                            {
                              "name": "i",
                              "nodeType": "YulIdentifier",
                              "src": "7324:1:81"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "7327:1:81",
                              "type": "",
                              "value": "1"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "7320:3:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7320:9:81"
                        },
                        "variableNames": [
                          {
                            "name": "i",
                            "nodeType": "YulIdentifier",
                            "src": "7315:1:81"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "7295:3:81",
                    "statements": []
                  },
                  "src": "7291:169:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7469:10:81",
                  "value": {
                    "name": "pos",
                    "nodeType": "YulIdentifier",
                    "src": "7476:3:81"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "7469:3:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_array_uint256_dyn",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "7088:5:81",
                "type": ""
              },
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "7095:3:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "7103:3:81",
                "type": ""
              }
            ],
            "src": "7050:435:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "7641:110:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "7658:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7669:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "7651:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7651:21:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7651:21:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7681:64:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "7718:6:81"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7730:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7741:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7726:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7726:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_array_uint256_dyn",
                      "nodeType": "YulIdentifier",
                      "src": "7689:28:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7689:56:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "7681:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "7610:9:81",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "7621:6:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "7632:4:81",
                "type": ""
              }
            ],
            "src": "7490:261:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "7840:263:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "7886:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "7895:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "7898:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "7888:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7888:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "7888:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "7861:7:81"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7870:9:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "7857:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7857:23:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7882:2:81",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "7853:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7853:32:81"
                  },
                  "nodeType": "YulIf",
                  "src": "7850:52:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7911:39:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "7940:9:81"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_address",
                      "nodeType": "YulIdentifier",
                      "src": "7921:18:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7921:29:81"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "7911:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "7959:45:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7989:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8000:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7985:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7985:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "7972:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7972:32:81"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "7963:5:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "8057:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "8066:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "8069:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "8059:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "8059:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "8059:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "8026:5:81"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "8047:5:81"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "8040:6:81"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8040:13:81"
                              }
                            ],
                            "functionName": {
                              "name": "iszero",
                              "nodeType": "YulIdentifier",
                              "src": "8033:6:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "8033:21:81"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "8023:2:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8023:32:81"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "8016:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8016:40:81"
                  },
                  "nodeType": "YulIf",
                  "src": "8013:60:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "8082:15:81",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "8092:5:81"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "8082:6:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_bool",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "7798:9:81",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "7809:7:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "7821:6:81",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "7829:6:81",
                "type": ""
              }
            ],
            "src": "7756:347:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "8195:173:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "8241:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "8250:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "8253:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "8243:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "8243:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "8243:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "8216:7:81"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8225:9:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "8212:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8212:23:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "8237:2:81",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "8208:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8208:32:81"
                  },
                  "nodeType": "YulIf",
                  "src": "8205:52:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "8266:39:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "8295:9:81"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_address",
                      "nodeType": "YulIdentifier",
                      "src": "8276:18:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8276:29:81"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "8266:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "8314:48:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8347:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8358:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8343:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8343:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_address",
                      "nodeType": "YulIdentifier",
                      "src": "8324:18:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8324:38:81"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "8314:6:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "8153:9:81",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "8164:7:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "8176:6:81",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "8184:6:81",
                "type": ""
              }
            ],
            "src": "8108:260:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "8520:459:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "8567:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "8576:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "8579:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "8569:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "8569:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "8569:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "8541:7:81"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8550:9:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "8537:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8537:23:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "8562:3:81",
                        "type": "",
                        "value": "160"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "8533:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8533:33:81"
                  },
                  "nodeType": "YulIf",
                  "src": "8530:53:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "8592:39:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "8621:9:81"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_address",
                      "nodeType": "YulIdentifier",
                      "src": "8602:18:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8602:29:81"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "8592:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "8640:48:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8673:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8684:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8669:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8669:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_address",
                      "nodeType": "YulIdentifier",
                      "src": "8650:18:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8650:38:81"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "8640:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "8697:42:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8724:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8735:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8720:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8720:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "8707:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8707:32:81"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "8697:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "8748:42:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8775:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8786:2:81",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8771:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8771:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "8758:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8758:32:81"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nodeType": "YulIdentifier",
                      "src": "8748:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "8799:47:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8830:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8841:3:81",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8826:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8826:19:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "8813:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8813:33:81"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "8803:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "8889:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "8898:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "8901:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "8891:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "8891:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "8891:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "8861:6:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "8869:18:81",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "8858:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8858:30:81"
                  },
                  "nodeType": "YulIf",
                  "src": "8855:50:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "8914:59:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8945:9:81"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "8956:6:81"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8941:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8941:22:81"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "8965:7:81"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "8924:16:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8924:49:81"
                  },
                  "variableNames": [
                    {
                      "name": "value4",
                      "nodeType": "YulIdentifier",
                      "src": "8914:6:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "8454:9:81",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "8465:7:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "8477:6:81",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "8485:6:81",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "8493:6:81",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "8501:6:81",
                "type": ""
              },
              {
                "name": "value4",
                "nodeType": "YulTypedName",
                "src": "8509:6:81",
                "type": ""
              }
            ],
            "src": "8373:606:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "9068:283:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "9117:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "9126:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "9129:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "9119:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "9119:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "9119:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "9096:6:81"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "9104:4:81",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "9092:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "9092:17:81"
                          },
                          {
                            "name": "end",
                            "nodeType": "YulIdentifier",
                            "src": "9111:3:81"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "9088:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9088:27:81"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "9081:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9081:35:81"
                  },
                  "nodeType": "YulIf",
                  "src": "9078:55:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "9142:30:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "9165:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "9152:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9152:20:81"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nodeType": "YulIdentifier",
                      "src": "9142:6:81"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "9215:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "9224:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "9227:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "9217:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "9217:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "9217:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "9187:6:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "9195:18:81",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "9184:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9184:30:81"
                  },
                  "nodeType": "YulIf",
                  "src": "9181:50:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "9240:29:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "9256:6:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "9264:4:81",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "9252:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9252:17:81"
                  },
                  "variableNames": [
                    {
                      "name": "arrayPos",
                      "nodeType": "YulIdentifier",
                      "src": "9240:8:81"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "9329:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "9338:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "9341:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "9331:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "9331:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "9331:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "9292:6:81"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9304:1:81",
                                    "type": "",
                                    "value": "5"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "9307:6:81"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "9300:3:81"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9300:14:81"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "9288:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "9288:27:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9317:4:81",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9284:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9284:38:81"
                      },
                      {
                        "name": "end",
                        "nodeType": "YulIdentifier",
                        "src": "9324:3:81"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "9281:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9281:47:81"
                  },
                  "nodeType": "YulIf",
                  "src": "9278:67:81"
                }
              ]
            },
            "name": "abi_decode_array_uint256_dyn_calldata",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "9031:6:81",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "9039:3:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "arrayPos",
                "nodeType": "YulTypedName",
                "src": "9047:8:81",
                "type": ""
              },
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "9057:6:81",
                "type": ""
              }
            ],
            "src": "8984:367:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "9566:925:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "9613:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "9622:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "9625:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "9615:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "9615:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "9615:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "9587:7:81"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9596:9:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "9583:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9583:23:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "9608:3:81",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "9579:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9579:33:81"
                  },
                  "nodeType": "YulIf",
                  "src": "9576:53:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "9638:39:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "9667:9:81"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_address",
                      "nodeType": "YulIdentifier",
                      "src": "9648:18:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9648:29:81"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "9638:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "9686:46:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9717:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9728:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9713:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9713:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "9700:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9700:32:81"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "9690:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "9741:28:81",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "9751:18:81",
                    "type": "",
                    "value": "0xffffffffffffffff"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "9745:2:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "9796:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "9805:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "9808:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "9798:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "9798:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "9798:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "9784:6:81"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "9792:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "9781:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9781:14:81"
                  },
                  "nodeType": "YulIf",
                  "src": "9778:34:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "9821:96:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9889:9:81"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "9900:6:81"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9885:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9885:22:81"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "9909:7:81"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_array_uint256_dyn_calldata",
                      "nodeType": "YulIdentifier",
                      "src": "9847:37:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9847:70:81"
                  },
                  "variables": [
                    {
                      "name": "value1_1",
                      "nodeType": "YulTypedName",
                      "src": "9825:8:81",
                      "type": ""
                    },
                    {
                      "name": "value2_1",
                      "nodeType": "YulTypedName",
                      "src": "9835:8:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "9926:18:81",
                  "value": {
                    "name": "value1_1",
                    "nodeType": "YulIdentifier",
                    "src": "9936:8:81"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "9926:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "9953:18:81",
                  "value": {
                    "name": "value2_1",
                    "nodeType": "YulIdentifier",
                    "src": "9963:8:81"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "9953:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "9980:48:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "10013:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "10024:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10009:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10009:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "9996:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9996:32:81"
                  },
                  "variables": [
                    {
                      "name": "offset_1",
                      "nodeType": "YulTypedName",
                      "src": "9984:8:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "10057:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "10066:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "10069:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "10059:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "10059:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "10059:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_1",
                        "nodeType": "YulIdentifier",
                        "src": "10043:8:81"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "10053:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "10040:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10040:16:81"
                  },
                  "nodeType": "YulIf",
                  "src": "10037:36:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "10082:98:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "10150:9:81"
                          },
                          {
                            "name": "offset_1",
                            "nodeType": "YulIdentifier",
                            "src": "10161:8:81"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10146:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10146:24:81"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "10172:7:81"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_array_uint256_dyn_calldata",
                      "nodeType": "YulIdentifier",
                      "src": "10108:37:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10108:72:81"
                  },
                  "variables": [
                    {
                      "name": "value3_1",
                      "nodeType": "YulTypedName",
                      "src": "10086:8:81",
                      "type": ""
                    },
                    {
                      "name": "value4_1",
                      "nodeType": "YulTypedName",
                      "src": "10096:8:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "10189:18:81",
                  "value": {
                    "name": "value3_1",
                    "nodeType": "YulIdentifier",
                    "src": "10199:8:81"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nodeType": "YulIdentifier",
                      "src": "10189:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "10216:18:81",
                  "value": {
                    "name": "value4_1",
                    "nodeType": "YulIdentifier",
                    "src": "10226:8:81"
                  },
                  "variableNames": [
                    {
                      "name": "value4",
                      "nodeType": "YulIdentifier",
                      "src": "10216:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "10243:48:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "10276:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "10287:2:81",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10272:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10272:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "10259:12:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10259:32:81"
                  },
                  "variables": [
                    {
                      "name": "offset_2",
                      "nodeType": "YulTypedName",
                      "src": "10247:8:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "10320:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "10329:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "10332:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "10322:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "10322:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "10322:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_2",
                        "nodeType": "YulIdentifier",
                        "src": "10306:8:81"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "10316:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "10303:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10303:16:81"
                  },
                  "nodeType": "YulIf",
                  "src": "10300:36:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "10345:86:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "10401:9:81"
                          },
                          {
                            "name": "offset_2",
                            "nodeType": "YulIdentifier",
                            "src": "10412:8:81"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10397:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10397:24:81"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "10423:7:81"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes_calldata",
                      "nodeType": "YulIdentifier",
                      "src": "10371:25:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10371:60:81"
                  },
                  "variables": [
                    {
                      "name": "value5_1",
                      "nodeType": "YulTypedName",
                      "src": "10349:8:81",
                      "type": ""
                    },
                    {
                      "name": "value6_1",
                      "nodeType": "YulTypedName",
                      "src": "10359:8:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "10440:18:81",
                  "value": {
                    "name": "value5_1",
                    "nodeType": "YulIdentifier",
                    "src": "10450:8:81"
                  },
                  "variableNames": [
                    {
                      "name": "value5",
                      "nodeType": "YulIdentifier",
                      "src": "10440:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "10467:18:81",
                  "value": {
                    "name": "value6_1",
                    "nodeType": "YulIdentifier",
                    "src": "10477:8:81"
                  },
                  "variableNames": [
                    {
                      "name": "value6",
                      "nodeType": "YulIdentifier",
                      "src": "10467:6:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_array$_t_uint256_$dyn_calldata_ptrt_array$_t_uint256_$dyn_calldata_ptrt_bytes_calldata_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "9484:9:81",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "9495:7:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "9507:6:81",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "9515:6:81",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "9523:6:81",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "9531:6:81",
                "type": ""
              },
              {
                "name": "value4",
                "nodeType": "YulTypedName",
                "src": "9539:6:81",
                "type": ""
              },
              {
                "name": "value5",
                "nodeType": "YulTypedName",
                "src": "9547:6:81",
                "type": ""
              },
              {
                "name": "value6",
                "nodeType": "YulTypedName",
                "src": "9555:6:81",
                "type": ""
              }
            ],
            "src": "9356:1135:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "10670:232:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "10687:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10698:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "10680:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10680:21:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10680:21:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "10721:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "10732:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10717:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10717:18:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10737:2:81",
                        "type": "",
                        "value": "42"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "10710:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10710:30:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10710:30:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "10760:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "10771:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10756:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10756:18:81"
                      },
                      {
                        "hexValue": "455243313135353a2061646472657373207a65726f206973206e6f7420612076",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "10776:34:81",
                        "type": "",
                        "value": "ERC1155: address zero is not a v"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "10749:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10749:62:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10749:62:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "10831:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "10842:2:81",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10827:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10827:18:81"
                      },
                      {
                        "hexValue": "616c6964206f776e6572",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "10847:12:81",
                        "type": "",
                        "value": "alid owner"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "10820:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10820:40:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10820:40:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "10869:27:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "10881:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10892:3:81",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "10877:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10877:19:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "10869:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_415a1b99e1fd4a18cf87c08995f5a9130182e8d76e9c17c497bfebaaef9265ad__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "10647:9:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "10661:4:81",
                "type": ""
              }
            ],
            "src": "10496:406:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "10962:325:81",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "10972:22:81",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10986:1:81",
                        "type": "",
                        "value": "1"
                      },
                      {
                        "name": "data",
                        "nodeType": "YulIdentifier",
                        "src": "10989:4:81"
                      }
                    ],
                    "functionName": {
                      "name": "shr",
                      "nodeType": "YulIdentifier",
                      "src": "10982:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10982:12:81"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nodeType": "YulIdentifier",
                      "src": "10972:6:81"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "11003:38:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "data",
                        "nodeType": "YulIdentifier",
                        "src": "11033:4:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11039:1:81",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "and",
                      "nodeType": "YulIdentifier",
                      "src": "11029:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11029:12:81"
                  },
                  "variables": [
                    {
                      "name": "outOfPlaceEncoding",
                      "nodeType": "YulTypedName",
                      "src": "11007:18:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "11080:31:81",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "11082:27:81",
                        "value": {
                          "arguments": [
                            {
                              "name": "length",
                              "nodeType": "YulIdentifier",
                              "src": "11096:6:81"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "11104:4:81",
                              "type": "",
                              "value": "0x7f"
                            }
                          ],
                          "functionName": {
                            "name": "and",
                            "nodeType": "YulIdentifier",
                            "src": "11092:3:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "11092:17:81"
                        },
                        "variableNames": [
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "11082:6:81"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "outOfPlaceEncoding",
                        "nodeType": "YulIdentifier",
                        "src": "11060:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "11053:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11053:26:81"
                  },
                  "nodeType": "YulIf",
                  "src": "11050:61:81"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "11170:111:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "11191:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "11198:3:81",
                                  "type": "",
                                  "value": "224"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "11203:10:81",
                                  "type": "",
                                  "value": "0x4e487b71"
                                }
                              ],
                              "functionName": {
                                "name": "shl",
                                "nodeType": "YulIdentifier",
                                "src": "11194:3:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "11194:20:81"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "11184:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "11184:31:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "11184:31:81"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "11235:1:81",
                              "type": "",
                              "value": "4"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "11238:4:81",
                              "type": "",
                              "value": "0x22"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "11228:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "11228:15:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "11228:15:81"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "11263:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "11266:4:81",
                              "type": "",
                              "value": "0x24"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "11256:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "11256:15:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "11256:15:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "outOfPlaceEncoding",
                        "nodeType": "YulIdentifier",
                        "src": "11126:18:81"
                      },
                      {
                        "arguments": [
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "11149:6:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11157:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "lt",
                          "nodeType": "YulIdentifier",
                          "src": "11146:2:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11146:14:81"
                      }
                    ],
                    "functionName": {
                      "name": "eq",
                      "nodeType": "YulIdentifier",
                      "src": "11123:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11123:38:81"
                  },
                  "nodeType": "YulIf",
                  "src": "11120:161:81"
                }
              ]
            },
            "name": "extract_byte_array_length",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "data",
                "nodeType": "YulTypedName",
                "src": "10942:4:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "10951:6:81",
                "type": ""
              }
            ],
            "src": "10907:380:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "11466:236:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "11483:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11494:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11476:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11476:21:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11476:21:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11517:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11528:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11513:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11513:18:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11533:2:81",
                        "type": "",
                        "value": "46"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11506:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11506:30:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11506:30:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11556:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11567:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11552:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11552:18:81"
                      },
                      {
                        "hexValue": "455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "11572:34:81",
                        "type": "",
                        "value": "ERC1155: caller is not token own"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11545:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11545:62:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11545:62:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11627:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11638:2:81",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11623:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11623:18:81"
                      },
                      {
                        "hexValue": "6572206f7220617070726f766564",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "11643:16:81",
                        "type": "",
                        "value": "er or approved"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11616:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11616:44:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11616:44:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "11669:27:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "11681:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11692:3:81",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "11677:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11677:19:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "11669:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_47c72b42072ed6c647dec3a0a5c88bec44d3e901c64659bff94ecce0a0323156__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "11443:9:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "11457:4:81",
                "type": ""
              }
            ],
            "src": "11292:410:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "11881:231:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "11898:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11909:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11891:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11891:21:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11891:21:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11932:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11943:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11928:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11928:18:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11948:2:81",
                        "type": "",
                        "value": "41"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11921:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11921:30:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11921:30:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11971:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11982:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11967:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11967:18:81"
                      },
                      {
                        "hexValue": "455243313135353a206163636f756e747320616e6420696473206c656e677468",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "11987:34:81",
                        "type": "",
                        "value": "ERC1155: accounts and ids length"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11960:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11960:62:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11960:62:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "12042:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12053:2:81",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12038:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12038:18:81"
                      },
                      {
                        "hexValue": "206d69736d61746368",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "12058:11:81",
                        "type": "",
                        "value": " mismatch"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "12031:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12031:39:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12031:39:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "12079:27:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "12091:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "12102:3:81",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "12087:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12087:19:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "12079:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_e155f5d69798c6205436a388a4f3a5fd42f54147b40f4d63a2c8071ff8a9fee5__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "11858:9:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "11872:4:81",
                "type": ""
              }
            ],
            "src": "11707:405:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "12149:95:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "12166:1:81",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12173:3:81",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12178:10:81",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "12169:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12169:20:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "12159:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12159:31:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12159:31:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "12206:1:81",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "12209:4:81",
                        "type": "",
                        "value": "0x32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "12199:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12199:15:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12199:15:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "12230:1:81",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "12233:4:81",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nodeType": "YulIdentifier",
                      "src": "12223:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12223:15:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12223:15:81"
                }
              ]
            },
            "name": "panic_error_0x32",
            "nodeType": "YulFunctionDefinition",
            "src": "12117:127:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "12281:95:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "12298:1:81",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12305:3:81",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12310:10:81",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "12301:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12301:20:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "12291:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12291:31:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12291:31:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "12338:1:81",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "12341:4:81",
                        "type": "",
                        "value": "0x11"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "12331:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12331:15:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12331:15:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "12362:1:81",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "12365:4:81",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nodeType": "YulIdentifier",
                      "src": "12355:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12355:15:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12355:15:81"
                }
              ]
            },
            "name": "panic_error_0x11",
            "nodeType": "YulFunctionDefinition",
            "src": "12249:127:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "12428:88:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "12459:22:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x11",
                            "nodeType": "YulIdentifier",
                            "src": "12461:16:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "12461:18:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "12461:18:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "12444:5:81"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12455:1:81",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "not",
                          "nodeType": "YulIdentifier",
                          "src": "12451:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12451:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "eq",
                      "nodeType": "YulIdentifier",
                      "src": "12441:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12441:17:81"
                  },
                  "nodeType": "YulIf",
                  "src": "12438:43:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "12490:20:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "12501:5:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "12508:1:81",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "12497:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12497:13:81"
                  },
                  "variableNames": [
                    {
                      "name": "ret",
                      "nodeType": "YulIdentifier",
                      "src": "12490:3:81"
                    }
                  ]
                }
              ]
            },
            "name": "increment_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "12410:5:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "ret",
                "nodeType": "YulTypedName",
                "src": "12420:3:81",
                "type": ""
              }
            ],
            "src": "12381:135:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "12695:223:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "12712:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "12723:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "12705:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12705:21:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12705:21:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "12746:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12757:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12742:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12742:18:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "12762:2:81",
                        "type": "",
                        "value": "33"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "12735:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12735:30:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12735:30:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "12785:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12796:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12781:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12781:18:81"
                      },
                      {
                        "hexValue": "455243313135353a206d696e7420746f20746865207a65726f20616464726573",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "12801:34:81",
                        "type": "",
                        "value": "ERC1155: mint to the zero addres"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "12774:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12774:62:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12774:62:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "12856:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12867:2:81",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12852:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12852:18:81"
                      },
                      {
                        "hexValue": "73",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "12872:3:81",
                        "type": "",
                        "value": "s"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "12845:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12845:31:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12845:31:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "12885:27:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "12897:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "12908:3:81",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "12893:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12893:19:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "12885:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_ebf031a1b7ee1d0b3a7752b450a3268e8b6c334561b48c1c0ba0f5bac05749f2__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "12672:9:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "12686:4:81",
                "type": ""
              }
            ],
            "src": "12521:397:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "12971:77:81",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "12981:16:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "x",
                        "nodeType": "YulIdentifier",
                        "src": "12992:1:81"
                      },
                      {
                        "name": "y",
                        "nodeType": "YulIdentifier",
                        "src": "12995:1:81"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "12988:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12988:9:81"
                  },
                  "variableNames": [
                    {
                      "name": "sum",
                      "nodeType": "YulIdentifier",
                      "src": "12981:3:81"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "13020:22:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x11",
                            "nodeType": "YulIdentifier",
                            "src": "13022:16:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "13022:18:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "13022:18:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "x",
                        "nodeType": "YulIdentifier",
                        "src": "13012:1:81"
                      },
                      {
                        "name": "sum",
                        "nodeType": "YulIdentifier",
                        "src": "13015:3:81"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "13009:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13009:10:81"
                  },
                  "nodeType": "YulIf",
                  "src": "13006:36:81"
                }
              ]
            },
            "name": "checked_add_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "x",
                "nodeType": "YulTypedName",
                "src": "12954:1:81",
                "type": ""
              },
              {
                "name": "y",
                "nodeType": "YulTypedName",
                "src": "12957:1:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "sum",
                "nodeType": "YulTypedName",
                "src": "12963:3:81",
                "type": ""
              }
            ],
            "src": "12923:125:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "13182:119:81",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "13192:26:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "13204:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "13215:2:81",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "13200:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13200:18:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "13192:4:81"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "13234:9:81"
                      },
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "13245:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "13227:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13227:25:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13227:25:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "13272:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "13283:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "13268:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13268:18:81"
                      },
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "13288:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "13261:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13261:34:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13261:34:81"
                }
              ]
            },
            "name": "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "13143:9:81",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "13154:6:81",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "13162:6:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "13173:4:81",
                "type": ""
              }
            ],
            "src": "13053:248:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "13480:230:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "13497:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "13508:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "13490:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13490:21:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13490:21:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "13531:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "13542:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "13527:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13527:18:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "13547:2:81",
                        "type": "",
                        "value": "40"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "13520:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13520:30:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13520:30:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "13570:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "13581:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "13566:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13566:18:81"
                      },
                      {
                        "hexValue": "455243313135353a2069647320616e6420616d6f756e7473206c656e67746820",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "13586:34:81",
                        "type": "",
                        "value": "ERC1155: ids and amounts length "
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "13559:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13559:62:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13559:62:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "13641:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "13652:2:81",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "13637:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13637:18:81"
                      },
                      {
                        "hexValue": "6d69736d61746368",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "13657:10:81",
                        "type": "",
                        "value": "mismatch"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "13630:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13630:38:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13630:38:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "13677:27:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "13689:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "13700:3:81",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "13685:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13685:19:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "13677:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "13457:9:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "13471:4:81",
                "type": ""
              }
            ],
            "src": "13306:404:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "13889:227:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "13906:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "13917:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "13899:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13899:21:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13899:21:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "13940:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "13951:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "13936:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13936:18:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "13956:2:81",
                        "type": "",
                        "value": "37"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "13929:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13929:30:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13929:30:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "13979:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "13990:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "13975:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13975:18:81"
                      },
                      {
                        "hexValue": "455243313135353a207472616e7366657220746f20746865207a65726f206164",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "13995:34:81",
                        "type": "",
                        "value": "ERC1155: transfer to the zero ad"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "13968:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13968:62:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13968:62:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "14050:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "14061:2:81",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "14046:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14046:18:81"
                      },
                      {
                        "hexValue": "6472657373",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "14066:7:81",
                        "type": "",
                        "value": "dress"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "14039:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14039:35:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14039:35:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "14083:27:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "14095:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "14106:3:81",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "14091:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14091:19:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "14083:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "13866:9:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "13880:4:81",
                "type": ""
              }
            ],
            "src": "13715:401:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "14295:232:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "14312:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "14323:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "14305:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14305:21:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14305:21:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "14346:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "14357:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "14342:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14342:18:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "14362:2:81",
                        "type": "",
                        "value": "42"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "14335:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14335:30:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14335:30:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "14385:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "14396:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "14381:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14381:18:81"
                      },
                      {
                        "hexValue": "455243313135353a20696e73756666696369656e742062616c616e636520666f",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "14401:34:81",
                        "type": "",
                        "value": "ERC1155: insufficient balance fo"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "14374:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14374:62:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14374:62:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "14456:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "14467:2:81",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "14452:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14452:18:81"
                      },
                      {
                        "hexValue": "72207472616e73666572",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "14472:12:81",
                        "type": "",
                        "value": "r transfer"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "14445:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14445:40:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14445:40:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "14494:27:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "14506:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "14517:3:81",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "14502:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14502:19:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "14494:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "14272:9:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "14286:4:81",
                "type": ""
              }
            ],
            "src": "14121:406:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "14761:236:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "14778:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "14789:2:81",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "14771:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14771:21:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14771:21:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "14801:70:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "14844:6:81"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "14856:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "14867:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "14852:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14852:18:81"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_array_uint256_dyn",
                      "nodeType": "YulIdentifier",
                      "src": "14815:28:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14815:56:81"
                  },
                  "variables": [
                    {
                      "name": "tail_1",
                      "nodeType": "YulTypedName",
                      "src": "14805:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "14891:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "14902:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "14887:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14887:18:81"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail_1",
                            "nodeType": "YulIdentifier",
                            "src": "14911:6:81"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "14919:9:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "14907:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14907:22:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "14880:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14880:50:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14880:50:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "14939:52:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "14976:6:81"
                      },
                      {
                        "name": "tail_1",
                        "nodeType": "YulIdentifier",
                        "src": "14984:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_array_uint256_dyn",
                      "nodeType": "YulIdentifier",
                      "src": "14947:28:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14947:44:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "14939:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "14722:9:81",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "14733:6:81",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "14741:6:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "14752:4:81",
                "type": ""
              }
            ],
            "src": "14532:465:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "15176:231:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "15193:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "15204:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "15186:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15186:21:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "15186:21:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "15227:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "15238:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "15223:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15223:18:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "15243:2:81",
                        "type": "",
                        "value": "41"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "15216:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15216:30:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "15216:30:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "15266:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "15277:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "15262:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15262:18:81"
                      },
                      {
                        "hexValue": "455243313135353a2073657474696e6720617070726f76616c20737461747573",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "15282:34:81",
                        "type": "",
                        "value": "ERC1155: setting approval status"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "15255:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15255:62:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "15255:62:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "15337:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "15348:2:81",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "15333:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15333:18:81"
                      },
                      {
                        "hexValue": "20666f722073656c66",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "15353:11:81",
                        "type": "",
                        "value": " for self"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "15326:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15326:39:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "15326:39:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "15374:27:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "15386:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "15397:3:81",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "15382:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15382:19:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "15374:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_df9806c6dc743de602e49918a67b580590d69ab768bdb59f977c0a884a91a7c2__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "15153:9:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "15167:4:81",
                "type": ""
              }
            ],
            "src": "15002:405:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "15643:330:81",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "15653:29:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "15671:3:81",
                            "type": "",
                            "value": "160"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "15676:1:81",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "15667:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15667:11:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "15680:1:81",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "sub",
                      "nodeType": "YulIdentifier",
                      "src": "15663:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15663:19:81"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "15657:2:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "15698:9:81"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "15713:6:81"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "15721:2:81"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "15709:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15709:15:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "15691:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15691:34:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "15691:34:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "15745:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "15756:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "15741:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15741:18:81"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value1",
                            "nodeType": "YulIdentifier",
                            "src": "15765:6:81"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "15773:2:81"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "15761:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15761:15:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "15734:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15734:43:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "15734:43:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "15797:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "15808:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "15793:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15793:18:81"
                      },
                      {
                        "name": "value2",
                        "nodeType": "YulIdentifier",
                        "src": "15813:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "15786:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15786:34:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "15786:34:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "15840:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "15851:2:81",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "15836:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15836:18:81"
                      },
                      {
                        "name": "value3",
                        "nodeType": "YulIdentifier",
                        "src": "15856:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "15829:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15829:34:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "15829:34:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "15883:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "15894:3:81",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "15879:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15879:19:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "15900:3:81",
                        "type": "",
                        "value": "160"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "15872:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15872:32:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "15872:32:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "15913:54:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "value4",
                        "nodeType": "YulIdentifier",
                        "src": "15939:6:81"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "15951:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "15962:3:81",
                            "type": "",
                            "value": "160"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "15947:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15947:19:81"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_string",
                      "nodeType": "YulIdentifier",
                      "src": "15921:17:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15921:46:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "15913:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "15580:9:81",
                "type": ""
              },
              {
                "name": "value4",
                "nodeType": "YulTypedName",
                "src": "15591:6:81",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "15599:6:81",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "15607:6:81",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "15615:6:81",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "15623:6:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "15634:4:81",
                "type": ""
              }
            ],
            "src": "15412:561:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "16058:169:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "16104:16:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "16113:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "16116:1:81",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "16106:6:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "16106:12:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "16106:12:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "16079:7:81"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "16088:9:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "16075:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "16075:23:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "16100:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "16071:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16071:32:81"
                  },
                  "nodeType": "YulIf",
                  "src": "16068:52:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "16129:29:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "16148:9:81"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "16142:5:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16142:16:81"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "16133:5:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "16191:5:81"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_bytes4",
                      "nodeType": "YulIdentifier",
                      "src": "16167:23:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16167:30:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "16167:30:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "16206:15:81",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "16216:5:81"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "16206:6:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes4_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "16024:9:81",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "16035:7:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "16047:6:81",
                "type": ""
              }
            ],
            "src": "15978:249:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "16275:136:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "16320:85:81",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "16349:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "16352:1:81",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "16355:1:81",
                              "type": "",
                              "value": "4"
                            }
                          ],
                          "functionName": {
                            "name": "returndatacopy",
                            "nodeType": "YulIdentifier",
                            "src": "16334:14:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "16334:23:81"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "16334:23:81"
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "16370:25:81",
                        "value": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "16381:3:81",
                              "type": "",
                              "value": "224"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "16392:1:81",
                                  "type": "",
                                  "value": "0"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nodeType": "YulIdentifier",
                                "src": "16386:5:81"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "16386:8:81"
                            }
                          ],
                          "functionName": {
                            "name": "shr",
                            "nodeType": "YulIdentifier",
                            "src": "16377:3:81"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "16377:18:81"
                        },
                        "variableNames": [
                          {
                            "name": "sig",
                            "nodeType": "YulIdentifier",
                            "src": "16370:3:81"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [],
                        "functionName": {
                          "name": "returndatasize",
                          "nodeType": "YulIdentifier",
                          "src": "16291:14:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "16291:16:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "16309:1:81",
                        "type": "",
                        "value": "3"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "16288:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16288:23:81"
                  },
                  "nodeType": "YulIf",
                  "src": "16285:120:81"
                }
              ]
            },
            "name": "return_data_selector",
            "nodeType": "YulFunctionDefinition",
            "returnVariables": [
              {
                "name": "sig",
                "nodeType": "YulTypedName",
                "src": "16267:3:81",
                "type": ""
              }
            ],
            "src": "16232:179:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "16463:624:81",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "16503:9:81",
                    "statements": [
                      {
                        "nodeType": "YulLeave",
                        "src": "16505:5:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [],
                        "functionName": {
                          "name": "returndatasize",
                          "nodeType": "YulIdentifier",
                          "src": "16479:14:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "16479:16:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "16497:4:81",
                        "type": "",
                        "value": "0x44"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "16476:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16476:26:81"
                  },
                  "nodeType": "YulIf",
                  "src": "16473:39:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "16521:21:81",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "16539:2:81",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "16533:5:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16533:9:81"
                  },
                  "variables": [
                    {
                      "name": "data",
                      "nodeType": "YulTypedName",
                      "src": "16525:4:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "16551:16:81",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "16565:1:81",
                        "type": "",
                        "value": "3"
                      }
                    ],
                    "functionName": {
                      "name": "not",
                      "nodeType": "YulIdentifier",
                      "src": "16561:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16561:6:81"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "16555:2:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "data",
                        "nodeType": "YulIdentifier",
                        "src": "16591:4:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "16597:1:81",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [],
                            "functionName": {
                              "name": "returndatasize",
                              "nodeType": "YulIdentifier",
                              "src": "16604:14:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "16604:16:81"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "16622:2:81"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "16600:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "16600:25:81"
                      }
                    ],
                    "functionName": {
                      "name": "returndatacopy",
                      "nodeType": "YulIdentifier",
                      "src": "16576:14:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16576:50:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "16576:50:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "16635:25:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "data",
                        "nodeType": "YulIdentifier",
                        "src": "16655:4:81"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "16649:5:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16649:11:81"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "16639:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "16669:26:81",
                  "value": {
                    "arguments": [],
                    "functionName": {
                      "name": "returndatasize",
                      "nodeType": "YulIdentifier",
                      "src": "16679:14:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16679:16:81"
                  },
                  "variables": [
                    {
                      "name": "_2",
                      "nodeType": "YulTypedName",
                      "src": "16673:2:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "16704:28:81",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "16714:18:81",
                    "type": "",
                    "value": "0xffffffffffffffff"
                  },
                  "variables": [
                    {
                      "name": "_3",
                      "nodeType": "YulTypedName",
                      "src": "16708:2:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "16790:9:81",
                    "statements": [
                      {
                        "nodeType": "YulLeave",
                        "src": "16792:5:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "16750:6:81"
                          },
                          {
                            "name": "_3",
                            "nodeType": "YulIdentifier",
                            "src": "16758:2:81"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "16747:2:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "16747:14:81"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "16770:6:81"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "16778:4:81",
                                "type": "",
                                "value": "0x24"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "16766:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "16766:17:81"
                          },
                          {
                            "name": "_2",
                            "nodeType": "YulIdentifier",
                            "src": "16785:2:81"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "16763:2:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "16763:25:81"
                      }
                    ],
                    "functionName": {
                      "name": "or",
                      "nodeType": "YulIdentifier",
                      "src": "16744:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16744:45:81"
                  },
                  "nodeType": "YulIf",
                  "src": "16741:58:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "16808:28:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "data",
                        "nodeType": "YulIdentifier",
                        "src": "16823:4:81"
                      },
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "16829:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "16819:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16819:17:81"
                  },
                  "variables": [
                    {
                      "name": "msg",
                      "nodeType": "YulTypedName",
                      "src": "16812:3:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "16845:24:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "msg",
                        "nodeType": "YulIdentifier",
                        "src": "16865:3:81"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "16859:5:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16859:10:81"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "16849:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "16896:9:81",
                    "statements": [
                      {
                        "nodeType": "YulLeave",
                        "src": "16898:5:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "16884:6:81"
                      },
                      {
                        "name": "_3",
                        "nodeType": "YulIdentifier",
                        "src": "16892:2:81"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "16881:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16881:14:81"
                  },
                  "nodeType": "YulIf",
                  "src": "16878:27:81"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "16987:9:81",
                    "statements": [
                      {
                        "nodeType": "YulLeave",
                        "src": "16989:5:81"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "msg",
                                "nodeType": "YulIdentifier",
                                "src": "16928:3:81"
                              },
                              {
                                "name": "length",
                                "nodeType": "YulIdentifier",
                                "src": "16933:6:81"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "16924:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "16924:16:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "16942:4:81",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "16920:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "16920:27:81"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "data",
                                "nodeType": "YulIdentifier",
                                "src": "16957:4:81"
                              },
                              {
                                "arguments": [],
                                "functionName": {
                                  "name": "returndatasize",
                                  "nodeType": "YulIdentifier",
                                  "src": "16963:14:81"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16963:16:81"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "16953:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "16953:27:81"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "16982:2:81"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "16949:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "16949:36:81"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "16917:2:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16917:69:81"
                  },
                  "nodeType": "YulIf",
                  "src": "16914:82:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "data",
                        "nodeType": "YulIdentifier",
                        "src": "17025:4:81"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "17039:6:81"
                              },
                              {
                                "name": "length",
                                "nodeType": "YulIdentifier",
                                "src": "17047:6:81"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "17035:3:81"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "17035:19:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "17056:4:81",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "17031:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "17031:30:81"
                      }
                    ],
                    "functionName": {
                      "name": "finalize_allocation",
                      "nodeType": "YulIdentifier",
                      "src": "17005:19:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17005:57:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "17005:57:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "17071:10:81",
                  "value": {
                    "name": "msg",
                    "nodeType": "YulIdentifier",
                    "src": "17078:3:81"
                  },
                  "variableNames": [
                    {
                      "name": "ret",
                      "nodeType": "YulIdentifier",
                      "src": "17071:3:81"
                    }
                  ]
                }
              ]
            },
            "name": "try_decode_error_message",
            "nodeType": "YulFunctionDefinition",
            "returnVariables": [
              {
                "name": "ret",
                "nodeType": "YulTypedName",
                "src": "16455:3:81",
                "type": ""
              }
            ],
            "src": "16416:671:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "17266:242:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "17283:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "17294:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "17276:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17276:21:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "17276:21:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "17317:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "17328:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "17313:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "17313:18:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "17333:2:81",
                        "type": "",
                        "value": "52"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "17306:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17306:30:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "17306:30:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "17356:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "17367:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "17352:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "17352:18:81"
                      },
                      {
                        "hexValue": "455243313135353a207472616e7366657220746f206e6f6e2d45524331313535",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "17372:34:81",
                        "type": "",
                        "value": "ERC1155: transfer to non-ERC1155"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "17345:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17345:62:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "17345:62:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "17427:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "17438:2:81",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "17423:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "17423:18:81"
                      },
                      {
                        "hexValue": "526563656976657220696d706c656d656e746572",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "17443:22:81",
                        "type": "",
                        "value": "Receiver implementer"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "17416:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17416:50:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "17416:50:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "17475:27:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "17487:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "17498:3:81",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "17483:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17483:19:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "17475:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_f591f7b75ffc499e05f8b34c3364b2eceff651378d9549db1d5d67c0d8255c5d__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "17243:9:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "17257:4:81",
                "type": ""
              }
            ],
            "src": "17092:416:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "17687:230:81",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "17704:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "17715:2:81",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "17697:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17697:21:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "17697:21:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "17738:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "17749:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "17734:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "17734:18:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "17754:2:81",
                        "type": "",
                        "value": "40"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "17727:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17727:30:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "17727:30:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "17777:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "17788:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "17773:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "17773:18:81"
                      },
                      {
                        "hexValue": "455243313135353a204552433131353552656365697665722072656a65637465",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "17793:34:81",
                        "type": "",
                        "value": "ERC1155: ERC1155Receiver rejecte"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "17766:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17766:62:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "17766:62:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "17848:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "17859:2:81",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "17844:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "17844:18:81"
                      },
                      {
                        "hexValue": "6420746f6b656e73",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "17864:10:81",
                        "type": "",
                        "value": "d tokens"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "17837:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17837:38:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "17837:38:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "17884:27:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "17896:9:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "17907:3:81",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "17892:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17892:19:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "17884:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_0587cccad73a80a7f013db13c596f4febc1968dc77e1d3589d5e7a509a3d6503__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "17664:9:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "17678:4:81",
                "type": ""
              }
            ],
            "src": "17513:404:81"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "18253:496:81",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "18263:29:81",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "18281:3:81",
                            "type": "",
                            "value": "160"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "18286:1:81",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "18277:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "18277:11:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "18290:1:81",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "sub",
                      "nodeType": "YulIdentifier",
                      "src": "18273:3:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18273:19:81"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "18267:2:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "18308:9:81"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "18323:6:81"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "18331:2:81"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "18319:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "18319:15:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "18301:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18301:34:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "18301:34:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "18355:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "18366:2:81",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "18351:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "18351:18:81"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value1",
                            "nodeType": "YulIdentifier",
                            "src": "18375:6:81"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "18383:2:81"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "18371:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "18371:15:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "18344:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18344:43:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "18344:43:81"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "18407:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "18418:2:81",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "18403:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "18403:18:81"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "18423:3:81",
                        "type": "",
                        "value": "160"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "18396:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18396:31:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "18396:31:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "18436:71:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "value2",
                        "nodeType": "YulIdentifier",
                        "src": "18479:6:81"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "18491:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "18502:3:81",
                            "type": "",
                            "value": "160"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "18487:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "18487:19:81"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_array_uint256_dyn",
                      "nodeType": "YulIdentifier",
                      "src": "18450:28:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18450:57:81"
                  },
                  "variables": [
                    {
                      "name": "tail_1",
                      "nodeType": "YulTypedName",
                      "src": "18440:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "18527:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "18538:2:81",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "18523:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "18523:18:81"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail_1",
                            "nodeType": "YulIdentifier",
                            "src": "18547:6:81"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "18555:9:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "18543:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "18543:22:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "18516:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18516:50:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "18516:50:81"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "18575:58:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "value3",
                        "nodeType": "YulIdentifier",
                        "src": "18618:6:81"
                      },
                      {
                        "name": "tail_1",
                        "nodeType": "YulIdentifier",
                        "src": "18626:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_array_uint256_dyn",
                      "nodeType": "YulIdentifier",
                      "src": "18589:28:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18589:44:81"
                  },
                  "variables": [
                    {
                      "name": "tail_2",
                      "nodeType": "YulTypedName",
                      "src": "18579:6:81",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "18653:9:81"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "18664:3:81",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "18649:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "18649:19:81"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail_2",
                            "nodeType": "YulIdentifier",
                            "src": "18674:6:81"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "18682:9:81"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "18670:3:81"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "18670:22:81"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "18642:6:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18642:51:81"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "18642:51:81"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "18702:41:81",
                  "value": {
                    "arguments": [
                      {
                        "name": "value4",
                        "nodeType": "YulIdentifier",
                        "src": "18728:6:81"
                      },
                      {
                        "name": "tail_2",
                        "nodeType": "YulIdentifier",
                        "src": "18736:6:81"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_string",
                      "nodeType": "YulIdentifier",
                      "src": "18710:17:81"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18710:33:81"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "18702:4:81"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__to_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "18190:9:81",
                "type": ""
              },
              {
                "name": "value4",
                "nodeType": "YulTypedName",
                "src": "18201:6:81",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "18209:6:81",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "18217:6:81",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "18225:6:81",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "18233:6:81",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "18244:4:81",
                "type": ""
              }
            ],
            "src": "17922:827:81"
          }
        ]
      },
      "contents": "{\n    { }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function validator_revert_bytes4(value)\n    {\n        if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_bytes4(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_encode_string(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 0x20) }\n        {\n            let _1 := 0x20\n            mstore(add(add(pos, i), _1), mload(add(add(value, i), _1)))\n        }\n        mstore(add(add(pos, length), 0x20), 0)\n        end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_string(value0, add(headStart, 32))\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_decode_bytes_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_uint256t_uint256t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := calldataload(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n        let offset := calldataload(add(headStart, 96))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value3_1, value4_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value3 := value3_1\n        value4 := value4_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 finalize_allocation(memPtr, size)\n    {\n        let newFreePtr := add(memPtr, and(add(size, 31), not(31)))\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n    function array_allocation_size_array_uint256_dyn(length) -> size\n    {\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n        size := add(shl(5, length), 0x20)\n    }\n    function abi_decode_array_uint256_dyn(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let _1 := calldataload(offset)\n        let _2 := 0x20\n        let _3 := array_allocation_size_array_uint256_dyn(_1)\n        let memPtr := mload(64)\n        finalize_allocation(memPtr, _3)\n        let dst := memPtr\n        mstore(memPtr, _1)\n        dst := add(memPtr, _2)\n        let srcEnd := add(add(offset, shl(5, _1)), _2)\n        if gt(srcEnd, end) { revert(0, 0) }\n        let src := add(offset, _2)\n        for { } lt(src, srcEnd) { src := add(src, _2) }\n        {\n            mstore(dst, calldataload(src))\n            dst := add(dst, _2)\n        }\n        array := memPtr\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        if gt(_1, 0xffffffffffffffff) { panic_error_0x41() }\n        let memPtr := mload(64)\n        finalize_allocation(memPtr, add(and(add(_1, 0x1f), not(31)), 0x20))\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_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n        let offset := calldataload(add(headStart, 64))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        value2 := abi_decode_array_uint256_dyn(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 96))\n        if gt(offset_1, _1) { revert(0, 0) }\n        value3 := abi_decode_array_uint256_dyn(add(headStart, offset_1), dataEnd)\n        let offset_2 := calldataload(add(headStart, 128))\n        if gt(offset_2, _1) { revert(0, 0) }\n        value4 := abi_decode_bytes(add(headStart, offset_2), dataEnd)\n    }\n    function abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := calldataload(_2)\n        let _4 := 0x20\n        let _5 := array_allocation_size_array_uint256_dyn(_3)\n        let memPtr := mload(64)\n        finalize_allocation(memPtr, _5)\n        let dst := memPtr\n        mstore(memPtr, _3)\n        dst := add(memPtr, _4)\n        let srcEnd := add(add(_2, shl(5, _3)), _4)\n        if gt(srcEnd, dataEnd) { revert(0, 0) }\n        let src := add(_2, _4)\n        for { } lt(src, srcEnd) { src := add(src, _4) }\n        {\n            mstore(dst, abi_decode_address(src))\n            dst := add(dst, _4)\n        }\n        value0 := memPtr\n        let offset_1 := calldataload(add(headStart, _4))\n        if gt(offset_1, _1) { revert(0, 0) }\n        value1 := abi_decode_array_uint256_dyn(add(headStart, offset_1), dataEnd)\n    }\n    function abi_encode_array_uint256_dyn(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        let _1 := 0x20\n        pos := add(pos, _1)\n        let srcPtr := add(value, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, mload(srcPtr))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        end := pos\n    }\n    function abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_array_uint256_dyn(value0, add(headStart, 32))\n    }\n    function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        let value := calldataload(add(headStart, 32))\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n        value1 := value\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n        let offset := calldataload(add(headStart, 128))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value4 := abi_decode_bytes(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_array_uint256_dyn_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, shl(5, length)), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_array$_t_uint256_$dyn_calldata_ptrt_array$_t_uint256_$dyn_calldata_ptrt_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        let offset := calldataload(add(headStart, 32))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let value1_1, value2_1 := abi_decode_array_uint256_dyn_calldata(add(headStart, offset), dataEnd)\n        value1 := value1_1\n        value2 := value2_1\n        let offset_1 := calldataload(add(headStart, 64))\n        if gt(offset_1, _1) { revert(0, 0) }\n        let value3_1, value4_1 := abi_decode_array_uint256_dyn_calldata(add(headStart, offset_1), dataEnd)\n        value3 := value3_1\n        value4 := value4_1\n        let offset_2 := calldataload(add(headStart, 96))\n        if gt(offset_2, _1) { revert(0, 0) }\n        let value5_1, value6_1 := abi_decode_bytes_calldata(add(headStart, offset_2), dataEnd)\n        value5 := value5_1\n        value6 := value6_1\n    }\n    function abi_encode_tuple_t_stringliteral_415a1b99e1fd4a18cf87c08995f5a9130182e8d76e9c17c497bfebaaef9265ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 42)\n        mstore(add(headStart, 64), \"ERC1155: address zero is not a v\")\n        mstore(add(headStart, 96), \"alid owner\")\n        tail := add(headStart, 128)\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function abi_encode_tuple_t_stringliteral_47c72b42072ed6c647dec3a0a5c88bec44d3e901c64659bff94ecce0a0323156__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 46)\n        mstore(add(headStart, 64), \"ERC1155: caller is not token own\")\n        mstore(add(headStart, 96), \"er or approved\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_e155f5d69798c6205436a388a4f3a5fd42f54147b40f4d63a2c8071ff8a9fee5__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 41)\n        mstore(add(headStart, 64), \"ERC1155: accounts and ids length\")\n        mstore(add(headStart, 96), \" mismatch\")\n        tail := add(headStart, 128)\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, not(0)) { panic_error_0x11() }\n        ret := add(value, 1)\n    }\n    function abi_encode_tuple_t_stringliteral_ebf031a1b7ee1d0b3a7752b450a3268e8b6c334561b48c1c0ba0f5bac05749f2__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), \"ERC1155: mint to the zero addres\")\n        mstore(add(headStart, 96), \"s\")\n        tail := add(headStart, 128)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        sum := add(x, y)\n        if gt(x, sum) { panic_error_0x11() }\n    }\n    function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 40)\n        mstore(add(headStart, 64), \"ERC1155: ids and amounts length \")\n        mstore(add(headStart, 96), \"mismatch\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 37)\n        mstore(add(headStart, 64), \"ERC1155: transfer to the zero ad\")\n        mstore(add(headStart, 96), \"dress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 42)\n        mstore(add(headStart, 64), \"ERC1155: insufficient balance fo\")\n        mstore(add(headStart, 96), \"r transfer\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, 64)\n        let tail_1 := abi_encode_array_uint256_dyn(value0, add(headStart, 64))\n        mstore(add(headStart, 32), sub(tail_1, headStart))\n        tail := abi_encode_array_uint256_dyn(value1, tail_1)\n    }\n    function abi_encode_tuple_t_stringliteral_df9806c6dc743de602e49918a67b580590d69ab768bdb59f977c0a884a91a7c2__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 41)\n        mstore(add(headStart, 64), \"ERC1155: setting approval status\")\n        mstore(add(headStart, 96), \" for self\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        let _1 := sub(shl(160, 1), 1)\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), 160)\n        tail := abi_encode_string(value4, add(headStart, 160))\n    }\n    function abi_decode_tuple_t_bytes4_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_bytes4(value)\n        value0 := value\n    }\n    function return_data_selector() -> sig\n    {\n        if gt(returndatasize(), 3)\n        {\n            returndatacopy(0, 0, 4)\n            sig := shr(224, mload(0))\n        }\n    }\n    function try_decode_error_message() -> ret\n    {\n        if lt(returndatasize(), 0x44) { leave }\n        let data := mload(64)\n        let _1 := not(3)\n        returndatacopy(data, 4, add(returndatasize(), _1))\n        let offset := mload(data)\n        let _2 := returndatasize()\n        let _3 := 0xffffffffffffffff\n        if or(gt(offset, _3), gt(add(offset, 0x24), _2)) { leave }\n        let msg := add(data, offset)\n        let length := mload(msg)\n        if gt(length, _3) { leave }\n        if gt(add(add(msg, length), 0x20), add(add(data, returndatasize()), _1)) { leave }\n        finalize_allocation(data, add(add(offset, length), 0x20))\n        ret := msg\n    }\n    function abi_encode_tuple_t_stringliteral_f591f7b75ffc499e05f8b34c3364b2eceff651378d9549db1d5d67c0d8255c5d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 52)\n        mstore(add(headStart, 64), \"ERC1155: transfer to non-ERC1155\")\n        mstore(add(headStart, 96), \"Receiver implementer\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_0587cccad73a80a7f013db13c596f4febc1968dc77e1d3589d5e7a509a3d6503__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 40)\n        mstore(add(headStart, 64), \"ERC1155: ERC1155Receiver rejecte\")\n        mstore(add(headStart, 96), \"d tokens\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__to_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        let _1 := sub(shl(160, 1), 1)\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), 160)\n        let tail_1 := abi_encode_array_uint256_dyn(value2, add(headStart, 160))\n        mstore(add(headStart, 96), sub(tail_1, headStart))\n        let tail_2 := abi_encode_array_uint256_dyn(value3, tail_1)\n        mstore(add(headStart, 128), sub(tail_2, headStart))\n        tail := abi_encode_string(value4, tail_2)\n    }\n}",
      "id": 81,
      "language": "Yul",
      "name": "#utility.yul"
    }
  ],
  "sourceMap": "129:535:58:-:0;;;172:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;362:113:74;;;;;;;;;-1:-1:-1;362:113:74;;;;;;;;;;;;;;;;428:13;362:113;-1:-1:-1;428:13:74;:::i;:::-;-1:-1:-1;451:7:74;:17;461:7;451;:17;:::i;:::-;;362:113;;172:59:58;129:535;;14:127:81;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:1042;226:6;257:2;300;288:9;279:7;275:23;271:32;268:52;;;316:1;313;306:12;268:52;343:16;;-1:-1:-1;;;;;408:14:81;;;405:34;;;435:1;432;425:12;405:34;473:6;462:9;458:22;448:32;;518:7;511:4;507:2;503:13;499:27;489:55;;540:1;537;530:12;489:55;569:2;563:9;591:2;587;584:10;581:36;;;597:18;;:::i;:::-;672:2;666:9;640:2;726:13;;-1:-1:-1;;722:22:81;;;746:2;718:31;714:40;702:53;;;770:18;;;790:22;;;767:46;764:72;;;816:18;;:::i;:::-;856:10;852:2;845:22;891:2;883:6;876:18;931:7;926:2;921;917;913:11;909:20;906:33;903:53;;;952:1;949;942:12;903:53;974:1;965:10;;984:129;998:2;995:1;992:9;984:129;;;1086:10;;;1082:19;;1076:26;1055:14;;;1051:23;;1044:59;1009:10;;;;984:129;;;1155:1;1150:2;1145;1137:6;1133:15;1129:24;1122:35;1176:6;1166:16;;;;;;;;146:1042;;;;:::o;1193:380::-;1272:1;1268:12;;;;1315;;;1336:61;;1390:4;1382:6;1378:17;1368:27;;1336:61;1443:2;1435:6;1432:14;1412:18;1409:38;1406:161;;1489:10;1484:3;1480:20;1477:1;1470:31;1524:4;1521:1;1514:15;1552:4;1549:1;1542:15;1406:161;;1193:380;;;:::o;1704:545::-;1806:2;1801:3;1798:11;1795:448;;;1842:1;1867:5;1863:2;1856:17;1912:4;1908:2;1898:19;1982:2;1970:10;1966:19;1963:1;1959:27;1953:4;1949:38;2018:4;2006:10;2003:20;2000:47;;;-1:-1:-1;2041:4:81;2000:47;2096:2;2091:3;2087:12;2084:1;2080:20;2074:4;2070:31;2060:41;;2151:82;2169:2;2162:5;2159:13;2151:82;;;2214:17;;;2195:1;2184:13;2151:82;;;2155:3;;;1795:448;1704:545;;;:::o;2425:1352::-;2545:10;;-1:-1:-1;;;;;2567:30:81;;2564:56;;;2600:18;;:::i;:::-;2629:97;2719:6;2679:38;2711:4;2705:11;2679:38;:::i;:::-;2673:4;2629:97;:::i;:::-;2781:4;;2845:2;2834:14;;2862:1;2857:663;;;;3564:1;3581:6;3578:89;;;-1:-1:-1;3633:19:81;;;3627:26;3578:89;-1:-1:-1;;2382:1:81;2378:11;;;2374:24;2370:29;2360:40;2406:1;2402:11;;;2357:57;3680:81;;2827:944;;2857:663;1651:1;1644:14;;;1688:4;1675:18;;-1:-1:-1;;2893:20:81;;;3011:236;3025:7;3022:1;3019:14;3011:236;;;3114:19;;;3108:26;3093:42;;3206:27;;;;3174:1;3162:14;;;;3041:19;;3011:236;;;3015:3;3275:6;3266:7;3263:19;3260:201;;;3336:19;;;3330:26;-1:-1:-1;;3419:1:81;3415:14;;;3431:3;3411:24;3407:37;3403:42;3388:58;3373:74;;3260:201;-1:-1:-1;;;;;3507:1:81;3491:14;;;3487:22;3474:36;;-1:-1:-1;2425:1352:81:o;:::-;129:535:58;;;;;;",
  "deployedSourceMap": "129:535:58:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1618:227:75;;;;;;:::i;:::-;;:::i;:::-;;;597:25:81;;;585:2;570:18;1618:227:75;;;;;;;;1171:305;;;;;;:::i;:::-;;:::i;:::-;;;1184:14:81;;1177:22;1159:41;;1147:2;1132:18;1171:305:75;1019:187:81;2516:89:75;;;:::i;:::-;;;;;;;:::i;565:95:58:-;;;;;;:::i;:::-;-1:-1:-1;644:9:58;;;;;;;;;-1:-1:-1;644:9:58;;;565:95;237:142;;;;;;:::i;:::-;;:::i;:::-;;3685:422:75;;;;;;:::i;:::-;;:::i;2002:508::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2611:93::-;;;:::i;2772:151::-;;;;;;:::i;:::-;;:::i;2990:166::-;;;;;;:::i;:::-;;:::i;3223:390::-;;;;;;:::i;:::-;;:::i;385:174:58:-;;;;;;:::i;:::-;;:::i;1618:227:75:-;1704:7;-1:-1:-1;;;;;1731:21:75;;1723:76;;;;-1:-1:-1;;;1723:76:75;;10698:2:81;1723:76:75;;;10680:21:81;10737:2;10717:18;;;10710:30;10776:34;10756:18;;;10749:62;-1:-1:-1;;;10827:18:81;;;10820:40;10877:19;;1723:76:75;;;;;;;;;-1:-1:-1;1816:13:75;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;1816:22:75;;;;;;;;;;1618:227;;;;;:::o;1171:305::-;1273:4;-1:-1:-1;;;;;;1308:41:75;;-1:-1:-1;;;1308:41:75;;:109;;-1:-1:-1;;;;;;;1365:52:75;;-1:-1:-1;;;1365:52:75;1308:109;:161;;;-1:-1:-1;;;;;;;;;;937:40:19;;;1433:36:75;829:155:19;2516:89:75;2561:13;2593:5;2586:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2516:89;:::o;237:142:58:-;340:32;346:7;355:2;359:6;367:4;;340:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;340:5:58;;-1:-1:-1;;;340:32:58:i;:::-;237:142;;;;;:::o;3685:422:75:-;-1:-1:-1;;;;;3910:18:75;;3918:10;3910:18;;:56;;;3932:34;3949:4;3955:10;3932:16;:34::i;:::-;3889:149;;;;-1:-1:-1;;;3889:149:75;;;;;;;:::i;:::-;4048:52;4071:4;4077:2;4081:3;4086:7;4095:4;4048:22;:52::i;2002:508::-;2153:16;2212:3;:10;2193:8;:15;:29;2185:83;;;;-1:-1:-1;;;2185:83:75;;11909:2:81;2185:83:75;;;11891:21:81;11948:2;11928:18;;;11921:30;11987:34;11967:18;;;11960:62;-1:-1:-1;;;12038:18:81;;;12031:39;12087:19;;2185:83:75;11707:405:81;2185:83:75;2279:30;2326:8;:15;-1:-1:-1;;;;;2312:30:75;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2312:30:75;;2279:63;;2358:9;2353:120;2377:8;:15;2373:1;:19;2353:120;;;2432:30;2442:8;2451:1;2442:11;;;;;;;;:::i;:::-;;;;;;;2455:3;2459:1;2455:6;;;;;;;;:::i;:::-;;;;;;;2432:9;:30::i;:::-;2413:13;2427:1;2413:16;;;;;;;;:::i;:::-;;;;;;;;;;:49;2394:3;;;:::i;:::-;;;2353:120;;;-1:-1:-1;2490:13:75;2002:508;-1:-1:-1;;;2002:508:75:o;2611:93::-;2658:13;2690:7;2683:14;;;;;:::i;2772:151::-;2866:50;2885:10;2897:8;2907;2866:18;:50::i;:::-;2772:151;;:::o;2990:166::-;-1:-1:-1;;;;;3112:27:75;;;3089:4;3112:27;;;:18;:27;;;;;;;;:37;;;;;;;;;;;;;;;2990:166::o;3223:390::-;-1:-1:-1;;;;;3423:18:75;;3431:10;3423:18;;:56;;;3445:34;3462:4;3468:10;3445:16;:34::i;:::-;3402:149;;;;-1:-1:-1;;;3402:149:75;;;;;;;:::i;:::-;3561:45;3579:4;3585:2;3589;3593:6;3601:4;3561:17;:45::i;385:174:58:-;515:37;526:7;535:2;;515:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;515:37:58;;;;;;;;;;;;;;;;;;;;-1:-1:-1;539:6:58;;-1:-1:-1;539:6:58;;;;515:37;;;539:6;;515:37;539:6;515:37;;;;;;;;;-1:-1:-1;;515:37:58;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;547:4:58;;-1:-1:-1;547:4:58;;;;515:37;;547:4;;;;515:37;;;;;;;;;-1:-1:-1;515:10:58;;-1:-1:-1;;;515:37:58:i;:::-;385:174;;;;;;;:::o;7334:707:75:-;-1:-1:-1;;;;;7481:16:75;;7473:62;;;;-1:-1:-1;;;7473:62:75;;;;;;;:::i;:::-;7565:10;7546:16;7608:21;7626:2;7608:17;:21::i;:::-;7585:44;;7639:24;7666:25;7684:6;7666:17;:25::i;:::-;7639:52;;7779:13;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;7779:17:75;;;;;;;;;:27;;7800:6;;7779:13;:27;;7800:6;;7779:27;:::i;:::-;;;;-1:-1:-1;;7821:52:75;;;13227:25:81;;;13283:2;13268:18;;13261:34;;;-1:-1:-1;;;;;7821:52:75;;;;7854:1;;7821:52;;;;;;13200:18:81;7821:52:75;;;;;;;7960:74;7991:8;8009:1;8013:2;8017;8021:6;8029:4;7960:30;:74::i;5848:1113::-;6068:7;:14;6054:3;:10;:28;6046:81;;;;-1:-1:-1;;;6046:81:75;;;;;;;:::i;:::-;-1:-1:-1;;;;;6145:16:75;;6137:66;;;;-1:-1:-1;;;6137:66:75;;;;;;;:::i;:::-;6233:10;6330:9;6325:411;6349:3;:10;6345:1;:14;6325:411;;;6380:10;6393:3;6397:1;6393:6;;;;;;;;:::i;:::-;;;;;;;6380:19;;6413:14;6430:7;6438:1;6430:10;;;;;;;;:::i;:::-;;;;;;;;;;;;6455:19;6477:13;;;:9;:13;;;;;;-1:-1:-1;;;;;6477:19:75;;;;;;;;;;;;6430:10;;-1:-1:-1;6518:21:75;;;;6510:76;;;;-1:-1:-1;;;6510:76:75;;;;;;;:::i;:::-;6628:13;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;6628:19:75;;;;;;;;;;6650:20;;;6628:42;;6698:17;;;;;;;:27;;6650:20;;6628:13;6698:27;;6650:20;;6698:27;:::i;:::-;;;;;;;;6366:370;;;6361:3;;;;:::i;:::-;;;6325:411;;;;6781:2;-1:-1:-1;;;;;6751:47:75;6775:4;-1:-1:-1;;;;;6751:47:75;6765:8;-1:-1:-1;;;;;6751:47:75;;6785:3;6790:7;6751:47;;;;;;;:::i;:::-;;;;;;;;6879:75;6915:8;6925:4;6931:2;6935:3;6940:7;6949:4;6879:35;:75::i;:::-;6036:925;5848:1113;;;;;:::o;11606:323::-;11756:8;-1:-1:-1;;;;;11747:17:75;:5;-1:-1:-1;;;;;11747:17:75;;11739:71;;;;-1:-1:-1;;;11739:71:75;;15204:2:81;11739:71:75;;;15186:21:81;15243:2;15223:18;;;15216:30;15282:34;15262:18;;;15255:62;-1:-1:-1;;;15333:18:81;;;15326:39;15382:19;;11739:71:75;15002:405:81;11739:71:75;-1:-1:-1;;;;;11820:25:75;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;11820:46:75;;;;;;;;;;11881:41;;1159::81;;;11881::75;;1132:18:81;11881:41:75;;;;;;;11606:323;;;:::o;4557:945::-;-1:-1:-1;;;;;4738:16:75;;4730:66;;;;-1:-1:-1;;;4730:66:75;;;;;;;:::i;:::-;4826:10;4807:16;4869:21;4887:2;4869:17;:21::i;:::-;4846:44;;4900:24;4927:25;4945:6;4927:17;:25::i;:::-;4900:52;;5034:19;5056:13;;;:9;:13;;;;;;;;-1:-1:-1;;;;;5056:19:75;;;;;;;;;;5093:21;;;;5085:76;;;;-1:-1:-1;;;5085:76:75;;;;;;;:::i;:::-;5195:13;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;5195:19:75;;;;;;;;;;5217:20;;;5195:42;;5257:17;;;;;;;:27;;5217:20;;5195:13;5257:27;;5217:20;;5257:27;:::i;:::-;;;;-1:-1:-1;;5300:46:75;;;13227:25:81;;;13283:2;13268:18;;13261:34;;;-1:-1:-1;;;;;5300:46:75;;;;;;;;;;;;;;13200:18:81;5300:46:75;;;;;;;5427:68;5458:8;5468:4;5474:2;5478;5482:6;5490:4;5427:30;:68::i;:::-;4720:782;;;;4557:945;;;;;:::o;8431:789::-;-1:-1:-1;;;;;8603:16:75;;8595:62;;;;-1:-1:-1;;;8595:62:75;;;;;;;:::i;:::-;8689:7;:14;8675:3;:10;:28;8667:81;;;;-1:-1:-1;;;8667:81:75;;;;;;;:::i;:::-;8778:10;8881:9;8876:101;8900:3;:10;8896:1;:14;8876:101;;;8956:7;8964:1;8956:10;;;;;;;;:::i;:::-;;;;;;;8931:9;:17;8941:3;8945:1;8941:6;;;;;;;;:::i;:::-;;;;;;;8931:17;;;;;;;;;;;:21;8949:2;-1:-1:-1;;;;;8931:21:75;-1:-1:-1;;;;;8931:21:75;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;-1:-1:-1;8912:3:75;;-1:-1:-1;8912:3:75;;;:::i;:::-;;;;8876:101;;;;9028:2;-1:-1:-1;;;;;8992:53:75;9024:1;-1:-1:-1;;;;;8992:53:75;9006:8;-1:-1:-1;;;;;8992:53:75;;9032:3;9037:7;8992:53;;;;;;;:::i;:::-;;;;;;;;9132:81;9168:8;9186:1;9190:2;9194:3;9199:7;9208:4;9132:35;:81::i;15760:193::-;15879:16;;;15893:1;15879:16;;;;;;;;;15826;;15854:22;;15879:16;;;;;;;;;;;;-1:-1:-1;15879:16:75;15854:41;;15916:7;15905:5;15911:1;15905:8;;;;;;;;:::i;:::-;;;;;;;;;;:18;15941:5;15760:193;-1:-1:-1;;15760:193:75:o;14231:725::-;14438:15;:2;-1:-1:-1;;;;;14438:13:75;;:15::i;:::-;14434:516;;;14473:72;;-1:-1:-1;;;14473:72:75;;-1:-1:-1;;;;;14473:38:75;;;;;:72;;14512:8;;14522:4;;14528:2;;14532:6;;14540:4;;14473:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14473:72:75;;;;;;;;-1:-1:-1;;14473:72:75;;;;;;;;;;;;:::i;:::-;;;14469:471;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;14816:6;14809:14;;-1:-1:-1;;;14809:14:75;;;;;;;;:::i;14469:471::-;;;14863:62;;-1:-1:-1;;;14863:62:75;;17294:2:81;14863:62:75;;;17276:21:81;17333:2;17313:18;;;17306:30;17372:34;17352:18;;;17345:62;-1:-1:-1;;;17423:18:81;;;17416:50;17483:19;;14863:62:75;17092:416:81;14469:471:75;-1:-1:-1;;;;;;14594:55:75;;-1:-1:-1;;;14594:55:75;14590:152;;14673:50;;-1:-1:-1;;;14673:50:75;;;;;;;:::i;14962:792::-;15194:15;:2;-1:-1:-1;;;;;15194:13:75;;:15::i;:::-;15190:558;;;15229:79;;-1:-1:-1;;;15229:79:75;;-1:-1:-1;;;;;15229:43:75;;;;;:79;;15273:8;;15283:4;;15289:3;;15294:7;;15303:4;;15229:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15229:79:75;;;;;;;;-1:-1:-1;;15229:79:75;;;;;;;;;;;;:::i;:::-;;;15225:513;;;;:::i;:::-;-1:-1:-1;;;;;;15387:60:75;;-1:-1:-1;;;15387:60:75;15383:157;;15471:50;;-1:-1:-1;;;15471:50:75;;;;;;;:::i;1175:320:16:-;-1:-1:-1;;;;;1465:19:16;;:23;;;1175:320::o;14:173:81:-;82:20;;-1:-1:-1;;;;;131:31:81;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:254::-;260:6;268;321:2;309:9;300:7;296:23;292:32;289:52;;;337:1;334;327:12;289:52;360:29;379:9;360:29;:::i;:::-;350:39;436:2;421:18;;;;408:32;;-1:-1:-1;;;192:254:81:o;633:131::-;-1:-1:-1;;;;;;707:32:81;;697:43;;687:71;;754:1;751;744:12;687:71;633:131;:::o;769:245::-;827:6;880:2;868:9;859:7;855:23;851:32;848:52;;;896:1;893;886:12;848:52;935:9;922:23;954:30;978:5;954:30;:::i;:::-;1003:5;769:245;-1:-1:-1;;;769:245:81:o;1211:423::-;1253:3;1291:5;1285:12;1318:6;1313:3;1306:19;1343:1;1353:162;1367:6;1364:1;1361:13;1353:162;;;1429:4;1485:13;;;1481:22;;1475:29;1457:11;;;1453:20;;1446:59;1382:12;1353:162;;;1357:3;1560:1;1553:4;1544:6;1539:3;1535:16;1531:27;1524:38;1623:4;1616:2;1612:7;1607:2;1599:6;1595:15;1591:29;1586:3;1582:39;1578:50;1571:57;;;1211:423;;;;:::o;1639:220::-;1788:2;1777:9;1770:21;1751:4;1808:45;1849:2;1838:9;1834:18;1826:6;1808:45;:::i;1864:180::-;1923:6;1976:2;1964:9;1955:7;1951:23;1947:32;1944:52;;;1992:1;1989;1982:12;1944:52;-1:-1:-1;2015:23:81;;1864:180;-1:-1:-1;1864:180:81:o;2049:347::-;2100:8;2110:6;2164:3;2157:4;2149:6;2145:17;2141:27;2131:55;;2182:1;2179;2172:12;2131:55;-1:-1:-1;2205:20:81;;-1:-1:-1;;;;;2237:30:81;;2234:50;;;2280:1;2277;2270:12;2234:50;2317:4;2309:6;2305:17;2293:29;;2369:3;2362:4;2353:6;2345;2341:19;2337:30;2334:39;2331:59;;;2386:1;2383;2376:12;2331:59;2049:347;;;;;:::o;2401:620::-;2498:6;2506;2514;2522;2530;2583:3;2571:9;2562:7;2558:23;2554:33;2551:53;;;2600:1;2597;2590:12;2551:53;2623:29;2642:9;2623:29;:::i;:::-;2613:39;;2699:2;2688:9;2684:18;2671:32;2661:42;;2750:2;2739:9;2735:18;2722:32;2712:42;;2805:2;2794:9;2790:18;2777:32;-1:-1:-1;;;;;2824:6:81;2821:30;2818:50;;;2864:1;2861;2854:12;2818:50;2903:58;2953:7;2944:6;2933:9;2929:22;2903:58;:::i;:::-;2401:620;;;;-1:-1:-1;2401:620:81;;-1:-1:-1;2980:8:81;;2877:84;2401:620;-1:-1:-1;;;2401:620:81:o;3026:127::-;3087:10;3082:3;3078:20;3075:1;3068:31;3118:4;3115:1;3108:15;3142:4;3139:1;3132:15;3158:249;3268:2;3249:13;;-1:-1:-1;;3245:27:81;3233:40;;-1:-1:-1;;;;;3288:34:81;;3324:22;;;3285:62;3282:88;;;3350:18;;:::i;:::-;3386:2;3379:22;-1:-1:-1;;3158:249:81:o;3412:183::-;3472:4;-1:-1:-1;;;;;3497:6:81;3494:30;3491:56;;;3527:18;;:::i;:::-;-1:-1:-1;3572:1:81;3568:14;3584:4;3564:25;;3412:183::o;3600:724::-;3654:5;3707:3;3700:4;3692:6;3688:17;3684:27;3674:55;;3725:1;3722;3715:12;3674:55;3761:6;3748:20;3787:4;3810:43;3850:2;3810:43;:::i;:::-;3882:2;3876:9;3894:31;3922:2;3914:6;3894:31;:::i;:::-;3960:18;;;4052:1;4048:10;;;;4036:23;;4032:32;;;3994:15;;;;-1:-1:-1;4076:15:81;;;4073:35;;;4104:1;4101;4094:12;4073:35;4140:2;4132:6;4128:15;4152:142;4168:6;4163:3;4160:15;4152:142;;;4234:17;;4222:30;;4272:12;;;;4185;;4152:142;;;-1:-1:-1;4312:6:81;3600:724;-1:-1:-1;;;;;;3600:724:81:o;4329:555::-;4371:5;4424:3;4417:4;4409:6;4405:17;4401:27;4391:55;;4442:1;4439;4432:12;4391:55;4478:6;4465:20;-1:-1:-1;;;;;4500:2:81;4497:26;4494:52;;;4526:18;;:::i;:::-;4575:2;4569:9;4587:67;4642:2;4623:13;;-1:-1:-1;;4619:27:81;4648:4;4615:38;4569:9;4587:67;:::i;:::-;4678:2;4670:6;4663:18;4724:3;4717:4;4712:2;4704:6;4700:15;4696:26;4693:35;4690:55;;;4741:1;4738;4731:12;4690:55;4805:2;4798:4;4790:6;4786:17;4779:4;4771:6;4767:17;4754:54;4852:1;4828:15;;;4845:4;4824:26;4817:37;;;;4832:6;4329:555;-1:-1:-1;;;4329:555:81:o;4889:943::-;5043:6;5051;5059;5067;5075;5128:3;5116:9;5107:7;5103:23;5099:33;5096:53;;;5145:1;5142;5135:12;5096:53;5168:29;5187:9;5168:29;:::i;:::-;5158:39;;5216:38;5250:2;5239:9;5235:18;5216:38;:::i;:::-;5206:48;;5305:2;5294:9;5290:18;5277:32;-1:-1:-1;;;;;5369:2:81;5361:6;5358:14;5355:34;;;5385:1;5382;5375:12;5355:34;5408:61;5461:7;5452:6;5441:9;5437:22;5408:61;:::i;:::-;5398:71;;5522:2;5511:9;5507:18;5494:32;5478:48;;5551:2;5541:8;5538:16;5535:36;;;5567:1;5564;5557:12;5535:36;5590:63;5645:7;5634:8;5623:9;5619:24;5590:63;:::i;:::-;5580:73;;5706:3;5695:9;5691:19;5678:33;5662:49;;5736:2;5726:8;5723:16;5720:36;;;5752:1;5749;5742:12;5720:36;;5775:51;5818:7;5807:8;5796:9;5792:24;5775:51;:::i;:::-;5765:61;;;4889:943;;;;;;;;:::o;5837:1208::-;5955:6;5963;6016:2;6004:9;5995:7;5991:23;5987:32;5984:52;;;6032:1;6029;6022:12;5984:52;6072:9;6059:23;-1:-1:-1;;;;;6142:2:81;6134:6;6131:14;6128:34;;;6158:1;6155;6148:12;6128:34;6196:6;6185:9;6181:22;6171:32;;6241:7;6234:4;6230:2;6226:13;6222:27;6212:55;;6263:1;6260;6253:12;6212:55;6299:2;6286:16;6321:4;6344:43;6384:2;6344:43;:::i;:::-;6416:2;6410:9;6428:31;6456:2;6448:6;6428:31;:::i;:::-;6494:18;;;6582:1;6578:10;;;;6570:19;;6566:28;;;6528:15;;;;-1:-1:-1;6606:19:81;;;6603:39;;;6638:1;6635;6628:12;6603:39;6662:11;;;;6682:148;6698:6;6693:3;6690:15;6682:148;;;6764:23;6783:3;6764:23;:::i;:::-;6752:36;;6715:12;;;;6808;;;;6682:148;;;6849:6;-1:-1:-1;;6893:18:81;;6880:32;;-1:-1:-1;;6924:16:81;;;6921:36;;;6953:1;6950;6943:12;6921:36;;6976:63;7031:7;7020:8;7009:9;7005:24;6976:63;:::i;:::-;6966:73;;;5837:1208;;;;;:::o;7050:435::-;7103:3;7141:5;7135:12;7168:6;7163:3;7156:19;7194:4;7223:2;7218:3;7214:12;7207:19;;7260:2;7253:5;7249:14;7281:1;7291:169;7305:6;7302:1;7299:13;7291:169;;;7366:13;;7354:26;;7400:12;;;;7435:15;;;;7327:1;7320:9;7291:169;;;-1:-1:-1;7476:3:81;;7050:435;-1:-1:-1;;;;;7050:435:81:o;7490:261::-;7669:2;7658:9;7651:21;7632:4;7689:56;7741:2;7730:9;7726:18;7718:6;7689:56;:::i;7756:347::-;7821:6;7829;7882:2;7870:9;7861:7;7857:23;7853:32;7850:52;;;7898:1;7895;7888:12;7850:52;7921:29;7940:9;7921:29;:::i;:::-;7911:39;;8000:2;7989:9;7985:18;7972:32;8047:5;8040:13;8033:21;8026:5;8023:32;8013:60;;8069:1;8066;8059:12;8013:60;8092:5;8082:15;;;7756:347;;;;;:::o;8108:260::-;8176:6;8184;8237:2;8225:9;8216:7;8212:23;8208:32;8205:52;;;8253:1;8250;8243:12;8205:52;8276:29;8295:9;8276:29;:::i;:::-;8266:39;;8324:38;8358:2;8347:9;8343:18;8324:38;:::i;:::-;8314:48;;8108:260;;;;;:::o;8373:606::-;8477:6;8485;8493;8501;8509;8562:3;8550:9;8541:7;8537:23;8533:33;8530:53;;;8579:1;8576;8569:12;8530:53;8602:29;8621:9;8602:29;:::i;:::-;8592:39;;8650:38;8684:2;8673:9;8669:18;8650:38;:::i;:::-;8640:48;;8735:2;8724:9;8720:18;8707:32;8697:42;;8786:2;8775:9;8771:18;8758:32;8748:42;;8841:3;8830:9;8826:19;8813:33;-1:-1:-1;;;;;8861:6:81;8858:30;8855:50;;;8901:1;8898;8891:12;8855:50;8924:49;8965:7;8956:6;8945:9;8941:22;8924:49;:::i;8984:367::-;9047:8;9057:6;9111:3;9104:4;9096:6;9092:17;9088:27;9078:55;;9129:1;9126;9119:12;9078:55;-1:-1:-1;9152:20:81;;-1:-1:-1;;;;;9184:30:81;;9181:50;;;9227:1;9224;9217:12;9181:50;9264:4;9256:6;9252:17;9240:29;;9324:3;9317:4;9307:6;9304:1;9300:14;9292:6;9288:27;9284:38;9281:47;9278:67;;;9341:1;9338;9331:12;9356:1135;9507:6;9515;9523;9531;9539;9547;9555;9608:3;9596:9;9587:7;9583:23;9579:33;9576:53;;;9625:1;9622;9615:12;9576:53;9648:29;9667:9;9648:29;:::i;:::-;9638:39;;9728:2;9717:9;9713:18;9700:32;-1:-1:-1;;;;;9792:2:81;9784:6;9781:14;9778:34;;;9808:1;9805;9798:12;9778:34;9847:70;9909:7;9900:6;9889:9;9885:22;9847:70;:::i;:::-;9936:8;;-1:-1:-1;9821:96:81;-1:-1:-1;10024:2:81;10009:18;;9996:32;;-1:-1:-1;10040:16:81;;;10037:36;;;10069:1;10066;10059:12;10037:36;10108:72;10172:7;10161:8;10150:9;10146:24;10108:72;:::i;:::-;10199:8;;-1:-1:-1;10082:98:81;-1:-1:-1;10287:2:81;10272:18;;10259:32;;-1:-1:-1;10303:16:81;;;10300:36;;;10332:1;10329;10322:12;10300:36;;10371:60;10423:7;10412:8;10401:9;10397:24;10371:60;:::i;:::-;9356:1135;;;;-1:-1:-1;9356:1135:81;;-1:-1:-1;9356:1135:81;;;;10345:86;;-1:-1:-1;;;9356:1135:81:o;10907:380::-;10986:1;10982:12;;;;11029;;;11050:61;;11104:4;11096:6;11092:17;11082:27;;11050:61;11157:2;11149:6;11146:14;11126:18;11123:38;11120:161;;11203:10;11198:3;11194:20;11191:1;11184:31;11238:4;11235:1;11228:15;11266:4;11263:1;11256:15;11120:161;;10907:380;;;:::o;11292:410::-;11494:2;11476:21;;;11533:2;11513:18;;;11506:30;11572:34;11567:2;11552:18;;11545:62;-1:-1:-1;;;11638:2:81;11623:18;;11616:44;11692:3;11677:19;;11292:410::o;12117:127::-;12178:10;12173:3;12169:20;12166:1;12159:31;12209:4;12206:1;12199:15;12233:4;12230:1;12223:15;12249:127;12310:10;12305:3;12301:20;12298:1;12291:31;12341:4;12338:1;12331:15;12365:4;12362:1;12355:15;12381:135;12420:3;12441:17;;;12438:43;;12461:18;;:::i;:::-;-1:-1:-1;12508:1:81;12497:13;;12381:135::o;12521:397::-;12723:2;12705:21;;;12762:2;12742:18;;;12735:30;12801:34;12796:2;12781:18;;12774:62;-1:-1:-1;;;12867:2:81;12852:18;;12845:31;12908:3;12893:19;;12521:397::o;12923:125::-;12988:9;;;13009:10;;;13006:36;;;13022:18;;:::i;13306:404::-;13508:2;13490:21;;;13547:2;13527:18;;;13520:30;13586:34;13581:2;13566:18;;13559:62;-1:-1:-1;;;13652:2:81;13637:18;;13630:38;13700:3;13685:19;;13306:404::o;13715:401::-;13917:2;13899:21;;;13956:2;13936:18;;;13929:30;13995:34;13990:2;13975:18;;13968:62;-1:-1:-1;;;14061:2:81;14046:18;;14039:35;14106:3;14091:19;;13715:401::o;14121:406::-;14323:2;14305:21;;;14362:2;14342:18;;;14335:30;14401:34;14396:2;14381:18;;14374:62;-1:-1:-1;;;14467:2:81;14452:18;;14445:40;14517:3;14502:19;;14121:406::o;14532:465::-;14789:2;14778:9;14771:21;14752:4;14815:56;14867:2;14856:9;14852:18;14844:6;14815:56;:::i;:::-;14919:9;14911:6;14907:22;14902:2;14891:9;14887:18;14880:50;14947:44;14984:6;14976;14947:44;:::i;:::-;14939:52;14532:465;-1:-1:-1;;;;;14532:465:81:o;15412:561::-;-1:-1:-1;;;;;15709:15:81;;;15691:34;;15761:15;;15756:2;15741:18;;15734:43;15808:2;15793:18;;15786:34;;;15851:2;15836:18;;15829:34;;;15671:3;15894;15879:19;;15872:32;;;15634:4;;15921:46;;15947:19;;15939:6;15921:46;:::i;:::-;15913:54;15412:561;-1:-1:-1;;;;;;;15412:561:81:o;15978:249::-;16047:6;16100:2;16088:9;16079:7;16075:23;16071:32;16068:52;;;16116:1;16113;16106:12;16068:52;16148:9;16142:16;16167:30;16191:5;16167:30;:::i;16232:179::-;16267:3;16309:1;16291:16;16288:23;16285:120;;;16355:1;16352;16349;16334:23;-1:-1:-1;16392:1:81;16386:8;16381:3;16377:18;16285:120;16232:179;:::o;16416:671::-;16455:3;16497:4;16479:16;16476:26;16473:39;;;16416:671;:::o;16473:39::-;16539:2;16533:9;-1:-1:-1;;16604:16:81;16600:25;;16597:1;16533:9;16576:50;16655:4;16649:11;16679:16;-1:-1:-1;;;;;16785:2:81;16778:4;16770:6;16766:17;16763:25;16758:2;16750:6;16747:14;16744:45;16741:58;;;16792:5;;;;;16416:671;:::o;16741:58::-;16829:6;16823:4;16819:17;16808:28;;16865:3;16859:10;16892:2;16884:6;16881:14;16878:27;;;16898:5;;;;;;16416:671;:::o;16878:27::-;16982:2;16963:16;16957:4;16953:27;16949:36;16942:4;16933:6;16928:3;16924:16;16920:27;16917:69;16914:82;;;16989:5;;;;;;16416:671;:::o;16914:82::-;17005:57;17056:4;17047:6;17039;17035:19;17031:30;17025:4;17005:57;:::i;:::-;-1:-1:-1;17078:3:81;;16416:671;-1:-1:-1;;;;;16416:671:81:o;17513:404::-;17715:2;17697:21;;;17754:2;17734:18;;;17727:30;17793:34;17788:2;17773:18;;17766:62;-1:-1:-1;;;17859:2:81;17844:18;;17837:38;17907:3;17892:19;;17513:404::o;17922:827::-;-1:-1:-1;;;;;18319:15:81;;;18301:34;;18371:15;;18366:2;18351:18;;18344:43;18281:3;18418:2;18403:18;;18396:31;;;18244:4;;18450:57;;18487:19;;18479:6;18450:57;:::i;:::-;18555:9;18547:6;18543:22;18538:2;18527:9;18523:18;18516:50;18589:44;18626:6;18618;18589:44;:::i;:::-;18575:58;;18682:9;18674:6;18670:22;18664:3;18653:9;18649:19;18642:51;18710:33;18736:6;18728;18710:33;:::i;:::-;18702:41;17922:827;-1:-1:-1;;;;;;;;17922:827:81:o",
  "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\n/// @author: manifold.xyz\n\nimport \"../token/ERC1155/ERC1155Base.sol\";\n\ncontract MockERC1155 is ERC1155Base {\n\n    constructor (string memory uri_) ERC1155Base(\"\", \"\"){\n    }\n\n    function testMint(address account, uint256 id, uint256 amount, bytes calldata data) external {\n        _mint(account, id, amount, data);\n    }\n\n    function testMintBatch(address account, uint256[] calldata id, uint256[] calldata amount, bytes calldata data) external {\n        _mintBatch(account, id, amount, data);\n    }\n\n    function uri(uint256) external pure override returns (string memory) {\n        return \"\";\n    }\n\n\n}\n",
  "sourcePath": "/Users/chung/git/manifoldxyz/solidity/creator-core-solidity/contracts/mocks/MockERC1155.sol",
  "ast": {
    "absolutePath": "project:/contracts/mocks/MockERC1155.sol",
    "exportedSymbols": {
      "Address": [
        1911
      ],
      "ERC1155Base": [
        18521
      ],
      "ERC1155Core": [
        19726
      ],
      "ERC165": [
        2132
      ],
      "IERC1155": [
        1333
      ],
      "IERC1155MetadataURI": [
        1389
      ],
      "IERC1155Receiver": [
        1374
      ],
      "IERC165": [
        2338
      ],
      "Math": [
        3203
      ],
      "MockERC1155": [
        16777
      ],
      "Strings": [
        2108
      ]
    },
    "id": 16778,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 16712,
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "33:23:58"
      },
      {
        "absolutePath": "project:/contracts/token/ERC1155/ERC1155Base.sol",
        "file": "../token/ERC1155/ERC1155Base.sol",
        "id": 16713,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 16778,
        "sourceUnit": 18522,
        "src": "85:42:58",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 16714,
              "name": "ERC1155Base",
              "nameLocations": [
                "153:11:58"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 18521,
              "src": "153:11:58"
            },
            "id": 16715,
            "nodeType": "InheritanceSpecifier",
            "src": "153:11:58"
          }
        ],
        "canonicalName": "MockERC1155",
        "contractDependencies": [],
        "contractKind": "contract",
        "fullyImplemented": true,
        "id": 16777,
        "linearizedBaseContracts": [
          16777,
          18521,
          19726,
          1389,
          1333,
          2132,
          2338
        ],
        "name": "MockERC1155",
        "nameLocation": "138:11:58",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 16724,
              "nodeType": "Block",
              "src": "224:7:58",
              "statements": []
            },
            "id": 16725,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "hexValue": "",
                    "id": 16720,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "217:2:58",
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                      "typeString": "literal_string \"\""
                    },
                    "value": ""
                  },
                  {
                    "hexValue": "",
                    "id": 16721,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "221:2:58",
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                      "typeString": "literal_string \"\""
                    },
                    "value": ""
                  }
                ],
                "id": 16722,
                "kind": "baseConstructorSpecifier",
                "modifierName": {
                  "id": 16719,
                  "name": "ERC1155Base",
                  "nameLocations": [
                    "205:11:58"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 18521,
                  "src": "205:11:58"
                },
                "nodeType": "ModifierInvocation",
                "src": "205:19:58"
              }
            ],
            "name": "",
            "nameLocation": "-1:-1:-1",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 16718,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16717,
                  "mutability": "mutable",
                  "name": "uri_",
                  "nameLocation": "199:4:58",
                  "nodeType": "VariableDeclaration",
                  "scope": 16725,
                  "src": "185:18:58",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 16716,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "185:6:58",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "184:20:58"
            },
            "returnParameters": {
              "id": 16723,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "224:0:58"
            },
            "scope": 16777,
            "src": "172:59:58",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 16743,
              "nodeType": "Block",
              "src": "330:49:58",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 16737,
                        "name": "account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16727,
                        "src": "346:7:58",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 16738,
                        "name": "id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16729,
                        "src": "355:2:58",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 16739,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16731,
                        "src": "359:6:58",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 16740,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16733,
                        "src": "367:4:58",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      ],
                      "id": 16736,
                      "name": "_mint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19160,
                      "src": "340:5:58",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (address,uint256,uint256,bytes memory)"
                      }
                    },
                    "id": 16741,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "340:32:58",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16742,
                  "nodeType": "ExpressionStatement",
                  "src": "340:32:58"
                }
              ]
            },
            "functionSelector": "292241f2",
            "id": 16744,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "testMint",
            "nameLocation": "246:8:58",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 16734,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16727,
                  "mutability": "mutable",
                  "name": "account",
                  "nameLocation": "263:7:58",
                  "nodeType": "VariableDeclaration",
                  "scope": 16744,
                  "src": "255:15:58",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 16726,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "255:7:58",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16729,
                  "mutability": "mutable",
                  "name": "id",
                  "nameLocation": "280:2:58",
                  "nodeType": "VariableDeclaration",
                  "scope": 16744,
                  "src": "272:10:58",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16728,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "272:7:58",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16731,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "292:6:58",
                  "nodeType": "VariableDeclaration",
                  "scope": 16744,
                  "src": "284:14:58",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16730,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "284:7:58",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16733,
                  "mutability": "mutable",
                  "name": "data",
                  "nameLocation": "315:4:58",
                  "nodeType": "VariableDeclaration",
                  "scope": 16744,
                  "src": "300:19:58",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 16732,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "300:5:58",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "254:66:58"
            },
            "returnParameters": {
              "id": 16735,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "330:0:58"
            },
            "scope": 16777,
            "src": "237:142:58",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 16764,
              "nodeType": "Block",
              "src": "505:54:58",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 16758,
                        "name": "account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16746,
                        "src": "526:7:58",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 16759,
                        "name": "id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16749,
                        "src": "535:2:58",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        }
                      },
                      {
                        "id": 16760,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16752,
                        "src": "539:6:58",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        }
                      },
                      {
                        "id": 16761,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16754,
                        "src": "547:4:58",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        },
                        {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      ],
                      "id": 16757,
                      "name": "_mintBatch",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19271,
                      "src": "515:10:58",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (address,uint256[] memory,uint256[] memory,bytes memory)"
                      }
                    },
                    "id": 16762,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "515:37:58",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16763,
                  "nodeType": "ExpressionStatement",
                  "src": "515:37:58"
                }
              ]
            },
            "functionSelector": "fda63b7e",
            "id": 16765,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "testMintBatch",
            "nameLocation": "394:13:58",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 16755,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16746,
                  "mutability": "mutable",
                  "name": "account",
                  "nameLocation": "416:7:58",
                  "nodeType": "VariableDeclaration",
                  "scope": 16765,
                  "src": "408:15:58",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 16745,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "408:7:58",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16749,
                  "mutability": "mutable",
                  "name": "id",
                  "nameLocation": "444:2:58",
                  "nodeType": "VariableDeclaration",
                  "scope": 16765,
                  "src": "425:21:58",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 16747,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "425:7:58",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 16748,
                    "nodeType": "ArrayTypeName",
                    "src": "425:9:58",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16752,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "467:6:58",
                  "nodeType": "VariableDeclaration",
                  "scope": 16765,
                  "src": "448:25:58",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 16750,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "448:7:58",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 16751,
                    "nodeType": "ArrayTypeName",
                    "src": "448:9:58",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16754,
                  "mutability": "mutable",
                  "name": "data",
                  "nameLocation": "490:4:58",
                  "nodeType": "VariableDeclaration",
                  "scope": 16765,
                  "src": "475:19:58",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 16753,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "475:5:58",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "407:88:58"
            },
            "returnParameters": {
              "id": 16756,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "505:0:58"
            },
            "scope": 16777,
            "src": "385:174:58",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              1388
            ],
            "body": {
              "id": 16775,
              "nodeType": "Block",
              "src": "634:26:58",
              "statements": [
                {
                  "expression": {
                    "hexValue": "",
                    "id": 16773,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "651:2:58",
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                      "typeString": "literal_string \"\""
                    },
                    "value": ""
                  },
                  "functionReturnParameters": 16772,
                  "id": 16774,
                  "nodeType": "Return",
                  "src": "644:9:58"
                }
              ]
            },
            "functionSelector": "0e89341c",
            "id": 16776,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "uri",
            "nameLocation": "574:3:58",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 16769,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "601:8:58"
            },
            "parameters": {
              "id": 16768,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16767,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 16776,
                  "src": "578:7:58",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16766,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "578:7:58",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "577:9:58"
            },
            "returnParameters": {
              "id": 16772,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16771,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 16776,
                  "src": "619:13:58",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 16770,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "619:6:58",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "618:15:58"
            },
            "scope": 16777,
            "src": "565:95:58",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 16778,
        "src": "129:535:58",
        "usedErrors": []
      }
    ],
    "src": "33:632:58"
  },
  "compiler": {
    "name": "solc",
    "version": "0.8.19+commit.7dd6d404.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.4.12",
  "updatedAt": "2023-03-22T17:07:39.774Z",
  "devdoc": {
    "events": {
      "ApprovalForAll(address,address,bool)": {
        "details": "Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to `approved`."
      },
      "TransferBatch(address,address,address,uint256[],uint256[])": {
        "details": "Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all transfers."
      },
      "TransferSingle(address,address,address,uint256,uint256)": {
        "details": "Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`."
      },
      "URI(string,uint256)": {
        "details": "Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. If an {URI} event was emitted for `id`, the standard https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value returned by {IERC1155MetadataURI-uri}."
      }
    },
    "kind": "dev",
    "methods": {
      "balanceOf(address,uint256)": {
        "details": "See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address."
      },
      "balanceOfBatch(address[],uint256[])": {
        "details": "See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length."
      },
      "isApprovedForAll(address,address)": {
        "details": "See {IERC1155-isApprovedForAll}."
      },
      "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": {
        "details": "See {IERC1155-safeBatchTransferFrom}."
      },
      "safeTransferFrom(address,address,uint256,uint256,bytes)": {
        "details": "See {IERC1155-safeTransferFrom}."
      },
      "setApprovalForAll(address,bool)": {
        "details": "See {IERC1155-setApprovalForAll}."
      },
      "supportsInterface(bytes4)": {
        "details": "See {IERC165-supportsInterface}."
      }
    },
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {},
    "version": 1
  }
}