{
  "id": "e1862f4bc8d8f08fbb6d03dc22c7739b",
  "_format": "hh-sol-build-info-1",
  "solcVersion": "0.8.17",
  "solcLongVersion": "0.8.17+commit.8df45f5f",
  "input": {
    "language": "Solidity",
    "sources": {
      "contracts/dnsregistrar/mocks/DummyDnsRegistrarDNSSEC.sol": {
        "content": "pragma solidity ^0.8.4;\n\ncontract DummyDNSSEC {\n    uint16 expectedType;\n    bytes expectedName;\n    uint32 inception;\n    uint64 inserted;\n    bytes20 hash;\n\n    function setData(\n        uint16 _expectedType,\n        bytes memory _expectedName,\n        uint32 _inception,\n        uint64 _inserted,\n        bytes memory _proof\n    ) public {\n        expectedType = _expectedType;\n        expectedName = _expectedName;\n        inception = _inception;\n        inserted = _inserted;\n        if (_proof.length != 0) {\n            hash = bytes20(keccak256(_proof));\n        }\n    }\n\n    function rrdata(uint16 dnstype, bytes memory name)\n        public\n        view\n        returns (\n            uint32,\n            uint64,\n            bytes20\n        )\n    {\n        require(dnstype == expectedType);\n        require(keccak256(name) == keccak256(expectedName));\n        return (inception, inserted, hash);\n    }\n}\n"
      }
    },
    "settings": {
      "optimizer": {
        "enabled": true,
        "runs": 10000
      },
      "outputSelection": {
        "*": {
          "*": [
            "abi",
            "evm.bytecode",
            "evm.deployedBytecode",
            "evm.methodIdentifiers",
            "metadata",
            "devdoc",
            "userdoc",
            "storageLayout",
            "evm.gasEstimates"
          ],
          "": [
            "ast"
          ]
        }
      },
      "metadata": {
        "useLiteralContent": true
      }
    }
  },
  "output": {
    "contracts": {
      "contracts/dnsregistrar/mocks/DummyDnsRegistrarDNSSEC.sol": {
        "DummyDNSSEC": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "uint16",
                  "name": "dnstype",
                  "type": "uint16"
                },
                {
                  "internalType": "bytes",
                  "name": "name",
                  "type": "bytes"
                }
              ],
              "name": "rrdata",
              "outputs": [
                {
                  "internalType": "uint32",
                  "name": "",
                  "type": "uint32"
                },
                {
                  "internalType": "uint64",
                  "name": "",
                  "type": "uint64"
                },
                {
                  "internalType": "bytes20",
                  "name": "",
                  "type": "bytes20"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint16",
                  "name": "_expectedType",
                  "type": "uint16"
                },
                {
                  "internalType": "bytes",
                  "name": "_expectedName",
                  "type": "bytes"
                },
                {
                  "internalType": "uint32",
                  "name": "_inception",
                  "type": "uint32"
                },
                {
                  "internalType": "uint64",
                  "name": "_inserted",
                  "type": "uint64"
                },
                {
                  "internalType": "bytes",
                  "name": "_proof",
                  "type": "bytes"
                }
              ],
              "name": "setData",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50610668806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063087991bc1461003b5780638581a99c1461009f575b600080fd5b61004e6100493660046102e8565b6100b4565b6040805163ffffffff909416845267ffffffffffffffff90921660208401527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169082015260600160405180910390f35b6100b26100ad366004610336565b610132565b005b600080548190819061ffff8681169116146100ce57600080fd5b60016040516100dd9190610435565b60405180910390208480519060200120146100f757600080fd5b505060025463ffffffff8116915067ffffffffffffffff640100000000820416906c01000000000000000000000000900460601b9250925092565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff8716179055600161016c8582610518565b506002805467ffffffffffffffff8416640100000000027fffffffffffffffffffffffffffffffffffffffff00000000000000000000000090911663ffffffff8616171790558051156101f057805160208201206002805460609290921c6c01000000000000000000000000026bffffffffffffffffffffffff9092169190911790555b5050505050565b803561ffff8116811461020957600080fd5b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261024e57600080fd5b813567ffffffffffffffff808211156102695761026961020e565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156102af576102af61020e565b816040528381528660208588010111156102c857600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080604083850312156102fb57600080fd5b610304836101f7565b9150602083013567ffffffffffffffff81111561032057600080fd5b61032c8582860161023d565b9150509250929050565b600080600080600060a0868803121561034e57600080fd5b610357866101f7565b9450602086013567ffffffffffffffff8082111561037457600080fd5b61038089838a0161023d565b95506040880135915063ffffffff8216821461039b57600080fd5b90935060608701359080821682146103b257600080fd5b909250608087013590808211156103c857600080fd5b506103d58882890161023d565b9150509295509295909350565b600181811c908216806103f657607f821691505b60208210810361042f577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b6000808354610443816103e2565b6001828116801561045b576001811461048e576104bd565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00841687528215158302870194506104bd565b8760005260208060002060005b858110156104b45781548a82015290840190820161049b565b50505082870194505b50929695505050505050565b601f82111561051357600081815260208120601f850160051c810160208610156104f05750805b601f850160051c820191505b8181101561050f578281556001016104fc565b5050505b505050565b815167ffffffffffffffff8111156105325761053261020e565b6105468161054084546103e2565b846104c9565b602080601f83116001811461059957600084156105635750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b17855561050f565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b828110156105e6578886015182559484019460019091019084016105c7565b508582101561062257878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b0190555056fea2646970667358221220f970faccf48130673cb60200b7626b2ec3f41b5592fa11117db24ad592d81c7264736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x668 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x87991BC EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0x8581A99C EQ PUSH2 0x9F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4E PUSH2 0x49 CALLDATASIZE PUSH1 0x4 PUSH2 0x2E8 JUMP JUMPDEST PUSH2 0xB4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP5 AND DUP5 MSTORE PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xB2 PUSH2 0xAD CALLDATASIZE PUSH1 0x4 PUSH2 0x336 JUMP JUMPDEST PUSH2 0x132 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 DUP2 SWAP1 PUSH2 0xFFFF DUP7 DUP2 AND SWAP2 AND EQ PUSH2 0xCE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x40 MLOAD PUSH2 0xDD SWAP2 SWAP1 PUSH2 0x435 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP5 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 EQ PUSH2 0xF7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x2 SLOAD PUSH4 0xFFFFFFFF DUP2 AND SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF PUSH5 0x100000000 DUP3 DIV AND SWAP1 PUSH13 0x1000000000000000000000000 SWAP1 DIV PUSH1 0x60 SHL SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 AND PUSH2 0xFFFF DUP8 AND OR SWAP1 SSTORE PUSH1 0x1 PUSH2 0x16C DUP6 DUP3 PUSH2 0x518 JUMP JUMPDEST POP PUSH1 0x2 DUP1 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP5 AND PUSH5 0x100000000 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 SWAP1 SWAP2 AND PUSH4 0xFFFFFFFF DUP7 AND OR OR SWAP1 SSTORE DUP1 MLOAD ISZERO PUSH2 0x1F0 JUMPI DUP1 MLOAD PUSH1 0x20 DUP3 ADD KECCAK256 PUSH1 0x2 DUP1 SLOAD PUSH1 0x60 SWAP3 SWAP1 SWAP3 SHR PUSH13 0x1000000000000000000000000 MUL PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST POP POP POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x209 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x24E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x269 JUMPI PUSH2 0x269 PUSH2 0x20E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP4 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x2AF JUMPI PUSH2 0x2AF PUSH2 0x20E JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP4 DUP2 MSTORE DUP7 PUSH1 0x20 DUP6 DUP9 ADD ADD GT ISZERO PUSH2 0x2C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 PUSH1 0x20 DUP8 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP6 DUP4 ADD ADD MSTORE DUP1 SWAP5 POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x304 DUP4 PUSH2 0x1F7 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x320 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x32C DUP6 DUP3 DUP7 ADD PUSH2 0x23D JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x34E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x357 DUP7 PUSH2 0x1F7 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x374 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x380 DUP10 DUP4 DUP11 ADD PUSH2 0x23D JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP2 POP PUSH4 0xFFFFFFFF DUP3 AND DUP3 EQ PUSH2 0x39B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP1 DUP1 DUP3 AND DUP3 EQ PUSH2 0x3B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x3C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3D5 DUP9 DUP3 DUP10 ADD PUSH2 0x23D JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x3F6 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x42F JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 SLOAD PUSH2 0x443 DUP2 PUSH2 0x3E2 JUMP JUMPDEST PUSH1 0x1 DUP3 DUP2 AND DUP1 ISZERO PUSH2 0x45B JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x48E JUMPI PUSH2 0x4BD JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP5 AND DUP8 MSTORE DUP3 ISZERO ISZERO DUP4 MUL DUP8 ADD SWAP5 POP PUSH2 0x4BD JUMP JUMPDEST DUP8 PUSH1 0x0 MSTORE PUSH1 0x20 DUP1 PUSH1 0x0 KECCAK256 PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x4B4 JUMPI DUP2 SLOAD DUP11 DUP3 ADD MSTORE SWAP1 DUP5 ADD SWAP1 DUP3 ADD PUSH2 0x49B JUMP JUMPDEST POP POP POP DUP3 DUP8 ADD SWAP5 POP JUMPDEST POP SWAP3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x513 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP7 LT ISZERO PUSH2 0x4F0 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x50F JUMPI DUP3 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x4FC JUMP JUMPDEST POP POP POP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x532 JUMPI PUSH2 0x532 PUSH2 0x20E JUMP JUMPDEST PUSH2 0x546 DUP2 PUSH2 0x540 DUP5 SLOAD PUSH2 0x3E2 JUMP JUMPDEST DUP5 PUSH2 0x4C9 JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH2 0x599 JUMPI PUSH1 0x0 DUP5 ISZERO PUSH2 0x563 JUMPI POP DUP6 DUP4 ADD MLOAD JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x3 DUP7 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP6 SWAP1 SHL OR DUP6 SSTORE PUSH2 0x50F JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x5E6 JUMPI DUP9 DUP7 ADD MLOAD DUP3 SSTORE SWAP5 DUP5 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 DUP5 ADD PUSH2 0x5C7 JUMP JUMPDEST POP DUP6 DUP3 LT ISZERO PUSH2 0x622 JUMPI DUP8 DUP6 ADD MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x3 DUP9 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF9 PUSH17 0xFACCF48130673CB60200B7626B2EC3F41B SSTORE SWAP3 STATICCALL GT GT PUSH30 0xB24AD592D81C7264736F6C63430008110033000000000000000000000000 ",
              "sourceMap": "25:885:0:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@rrdata_91": {
                  "entryPoint": 180,
                  "id": 91,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "@setData_56": {
                  "entryPoint": 306,
                  "id": 56,
                  "parameterSlots": 5,
                  "returnSlots": 0
                },
                "abi_decode_bytes": {
                  "entryPoint": 573,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_uint16t_bytes_memory_ptr": {
                  "entryPoint": 744,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_uint16t_bytes_memory_ptrt_uint32t_uint64t_bytes_memory_ptr": {
                  "entryPoint": 822,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 5
                },
                "abi_decode_uint16": {
                  "entryPoint": 503,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_bytes_storage__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 1077,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint32_t_uint64_t_bytes20__to_t_uint32_t_uint64_t_bytes20__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "array_dataslot_bytes_storage": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "clean_up_bytearray_end_slots_bytes_storage": {
                  "entryPoint": 1225,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage": {
                  "entryPoint": 1304,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "extract_byte_array_length": {
                  "entryPoint": 994,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "extract_used_part_and_set_length_of_short_byte_array": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "panic_error_0x41": {
                  "entryPoint": 526,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:6646:1",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:1",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "62:111:1",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "72:29:1",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "94:6:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "81:12:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "81:20:1"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "72:5:1"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "151:16:1",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "160:1:1",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "163:1:1",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "153:6:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "153:12:1"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "153:12:1"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "123:5:1"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "134:5:1"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "141:6:1",
                                            "type": "",
                                            "value": "0xffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "130:3:1"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "130:18:1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "120:2:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "120:29:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "113:6:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "113:37:1"
                              },
                              "nodeType": "YulIf",
                              "src": "110:57:1"
                            }
                          ]
                        },
                        "name": "abi_decode_uint16",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "41:6:1",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "52:5:1",
                            "type": ""
                          }
                        ],
                        "src": "14:159:1"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "210:152:1",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "227:1:1",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "230:77:1",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "220:6:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "220:88:1"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "220:88:1"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "324:1:1",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "327:4:1",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "317:6:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "317:15:1"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "317:15:1"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "348:1:1",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "351:4:1",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "341:6:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "341:15:1"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "341:15:1"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "178:184:1"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "419:725:1",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "468:16:1",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "477:1:1",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "480:1:1",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "470:6:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "470:12:1"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "470:12:1"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "447:6:1"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "455:4:1",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "443:3:1"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "443:17:1"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "462:3:1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "439:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "439:27:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "432:6:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "432:35:1"
                              },
                              "nodeType": "YulIf",
                              "src": "429:55:1"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "493:30:1",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "516:6:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "503:12:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "503:20:1"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "497:2:1",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "532:28:1",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "542:18:1",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "536:2:1",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "583:22:1",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "585:16:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "585:18:1"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "585:18:1"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "575:2:1"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "579:2:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "572:2:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "572:10:1"
                              },
                              "nodeType": "YulIf",
                              "src": "569:36:1"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "614:76:1",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "624:66:1",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "618:2:1",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "699:23:1",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "719:2:1",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "713:5:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "713:9:1"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "703:6:1",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "731:71:1",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "753:6:1"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "_1",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "777:2:1"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "781:4:1",
                                                    "type": "",
                                                    "value": "0x1f"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "773:3:1"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "773:13:1"
                                              },
                                              {
                                                "name": "_3",
                                                "nodeType": "YulIdentifier",
                                                "src": "788:2:1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "769:3:1"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "769:22:1"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "793:2:1",
                                            "type": "",
                                            "value": "63"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "765:3:1"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "765:31:1"
                                      },
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "798:2:1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "761:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "761:40:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "749:3:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "749:53:1"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "735:10:1",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "861:22:1",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "863:16:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "863:18:1"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "863:18:1"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "820:10:1"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "832:2:1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "817:2:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "817:18:1"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "840:10:1"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "852:6:1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "837:2:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "837:22:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "814:2:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "814:46:1"
                              },
                              "nodeType": "YulIf",
                              "src": "811:72:1"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "899:2:1",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "903:10:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "892:6:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "892:22:1"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "892:22:1"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "930:6:1"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "938:2:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "923:6:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "923:18:1"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "923:18:1"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "989:16:1",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "998:1:1",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1001:1:1",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "991:6:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "991:12:1"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "991:12:1"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "964:6:1"
                                          },
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "972:2:1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "960:3:1"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "960:15:1"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "977:4:1",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "956:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "956:26:1"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "984:3:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "953:2:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "953:35:1"
                              },
                              "nodeType": "YulIf",
                              "src": "950:55:1"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1031:6:1"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1039:4:1",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1027:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1027:17:1"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "1050:6:1"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1058:4:1",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1046:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1046:17:1"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1065:2:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "1014:12:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1014:54:1"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1014:54:1"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "memPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "1092:6:1"
                                          },
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "1100:2:1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1088:3:1"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1088:15:1"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1105:4:1",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1084:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1084:26:1"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1112:1:1",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1077:6:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1077:37:1"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1077:37:1"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1123:15:1",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "1132:6:1"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "1123:5:1"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_bytes",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "393:6:1",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "401:3:1",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "409:5:1",
                            "type": ""
                          }
                        ],
                        "src": "367:777:1"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1244:297:1",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1290:16:1",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1299:1:1",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1302:1:1",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1292:6:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1292:12:1"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1292:12:1"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1265:7:1"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1274:9:1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1261:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1261:23:1"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1286:2:1",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1257:3:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1257:32:1"
                              },
                              "nodeType": "YulIf",
                              "src": "1254:52:1"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1315:38:1",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1343:9:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint16",
                                  "nodeType": "YulIdentifier",
                                  "src": "1325:17:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1325:28:1"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1315:6:1"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1362:46:1",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1393:9:1"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1404:2:1",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1389:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1389:18:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1376:12:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1376:32:1"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "1366:6:1",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1451:16:1",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1460:1:1",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1463:1:1",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1453:6:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1453:12:1"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1453:12:1"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1423:6:1"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1431:18:1",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1420:2:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1420:30:1"
                              },
                              "nodeType": "YulIf",
                              "src": "1417:50:1"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1476:59:1",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1507:9:1"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "1518:6:1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1503:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1503:22:1"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1527:7:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "1486:16:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1486:49:1"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1476:6:1"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint16t_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1202:9:1",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1213:7:1",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1225:6:1",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1233:6:1",
                            "type": ""
                          }
                        ],
                        "src": "1149:392:1"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1699:277:1",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1709:26:1",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1721:9:1"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1732:2:1",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1717:3:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1717:18:1"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1709:4:1"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1751:9:1"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "1766:6:1"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1774:10:1",
                                        "type": "",
                                        "value": "0xffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1762:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1762:23:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1744:6:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1744:42:1"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1744:42:1"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1806:9:1"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1817:2:1",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1802:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1802:18:1"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "1826:6:1"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1834:18:1",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1822:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1822:31:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1795:6:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1795:59:1"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1795:59:1"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1874:9:1"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1885:2:1",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1870:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1870:18:1"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "1894:6:1"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1902:66:1",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1890:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1890:79:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1863:6:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1863:107:1"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1863:107:1"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint32_t_uint64_t_bytes20__to_t_uint32_t_uint64_t_bytes20__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1652:9:1",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "1663:6:1",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1671:6:1",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1679:6:1",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1690:4:1",
                            "type": ""
                          }
                        ],
                        "src": "1546:430:1"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2134:788:1",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2181:16:1",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2190:1:1",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2193:1:1",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2183:6:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2183:12:1"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2183:12:1"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2155:7:1"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2164:9:1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2151:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2151:23:1"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2176:3:1",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2147:3:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2147:33:1"
                              },
                              "nodeType": "YulIf",
                              "src": "2144:53:1"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2206:38:1",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2234:9:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint16",
                                  "nodeType": "YulIdentifier",
                                  "src": "2216:17:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2216:28:1"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2206:6:1"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2253:46:1",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2284:9:1"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2295:2:1",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2280:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2280:18:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2267:12:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2267:32:1"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "2257:6:1",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2308:28:1",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2318:18:1",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2312:2:1",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2363:16:1",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2372:1:1",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2375:1:1",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2365:6:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2365:12:1"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2365:12:1"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "2351:6:1"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2359:2:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2348:2:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2348:14:1"
                              },
                              "nodeType": "YulIf",
                              "src": "2345:34:1"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2388:59:1",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2419:9:1"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "2430:6:1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2415:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2415:22:1"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2439:7:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "2398:16:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2398:49:1"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2388:6:1"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2456:45:1",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2486:9:1"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2497:2:1",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2482:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2482:18:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2469:12:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2469:32:1"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "2460:5:1",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2555:16:1",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2564:1:1",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2567:1:1",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2557:6:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2557:12:1"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2557:12:1"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "2523:5:1"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "2534:5:1"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2541:10:1",
                                            "type": "",
                                            "value": "0xffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "2530:3:1"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2530:22:1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "2520:2:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2520:33:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "2513:6:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2513:41:1"
                              },
                              "nodeType": "YulIf",
                              "src": "2510:61:1"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2580:15:1",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "2590:5:1"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "2580:6:1"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2604:47:1",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2636:9:1"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2647:2:1",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2632:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2632:18:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2619:12:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2619:32:1"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2608:7:1",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2701:16:1",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2710:1:1",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2713:1:1",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2703:6:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2703:12:1"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2703:12:1"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "2673:7:1"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "2686:7:1"
                                          },
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "2695:2:1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "2682:3:1"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2682:16:1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "2670:2:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2670:29:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "2663:6:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2663:37:1"
                              },
                              "nodeType": "YulIf",
                              "src": "2660:57:1"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2726:17:1",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "2736:7:1"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "2726:6:1"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2752:49:1",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2785:9:1"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2796:3:1",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2781:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2781:19:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2768:12:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2768:33:1"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2756:8:1",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2830:16:1",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2839:1:1",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2842:1:1",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2832:6:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2832:12:1"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2832:12:1"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2816:8:1"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2826:2:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2813:2:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2813:16:1"
                              },
                              "nodeType": "YulIf",
                              "src": "2810:36:1"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2855:61:1",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2886:9:1"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "2897:8:1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2882:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2882:24:1"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2908:7:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "2865:16:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2865:51:1"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "2855:6:1"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint16t_bytes_memory_ptrt_uint32t_uint64t_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2068:9:1",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2079:7:1",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2091:6:1",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2099:6:1",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "2107:6:1",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "2115:6:1",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "2123:6:1",
                            "type": ""
                          }
                        ],
                        "src": "1981:941:1"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2982:382:1",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2992:22:1",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3006:1:1",
                                    "type": "",
                                    "value": "1"
                                  },
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "3009:4:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "3002:3:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3002:12:1"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "2992:6:1"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3023:38:1",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "3053:4:1"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3059:1:1",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "3049:3:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3049:12:1"
                              },
                              "variables": [
                                {
                                  "name": "outOfPlaceEncoding",
                                  "nodeType": "YulTypedName",
                                  "src": "3027:18:1",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3100:31:1",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "3102:27:1",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "length",
                                          "nodeType": "YulIdentifier",
                                          "src": "3116:6:1"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3124:4:1",
                                          "type": "",
                                          "value": "0x7f"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nodeType": "YulIdentifier",
                                        "src": "3112:3:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3112:17:1"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "3102:6:1"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "3080:18:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "3073:6:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3073:26:1"
                              },
                              "nodeType": "YulIf",
                              "src": "3070:61:1"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3190:168:1",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3211:1:1",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3214:77:1",
                                          "type": "",
                                          "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "3204:6:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3204:88:1"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3204:88:1"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3312:1:1",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3315:4:1",
                                          "type": "",
                                          "value": "0x22"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "3305:6:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3305:15:1"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3305:15:1"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3340:1:1",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3343:4:1",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3333:6:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3333:15:1"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3333:15:1"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "3146:18:1"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "3169:6:1"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3177:2:1",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "3166:2:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3166:14:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "3143:2:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3143:38:1"
                              },
                              "nodeType": "YulIf",
                              "src": "3140:218:1"
                            }
                          ]
                        },
                        "name": "extract_byte_array_length",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "2962:4:1",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "2971:6:1",
                            "type": ""
                          }
                        ],
                        "src": "2927:437:1"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3424:65:1",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3441:1:1",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "name": "ptr",
                                    "nodeType": "YulIdentifier",
                                    "src": "3444:3:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3434:6:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3434:14:1"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3434:14:1"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3457:26:1",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3475:1:1",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3478:4:1",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "keccak256",
                                  "nodeType": "YulIdentifier",
                                  "src": "3465:9:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3465:18:1"
                              },
                              "variableNames": [
                                {
                                  "name": "data",
                                  "nodeType": "YulIdentifier",
                                  "src": "3457:4:1"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "array_dataslot_bytes_storage",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "ptr",
                            "nodeType": "YulTypedName",
                            "src": "3407:3:1",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "3415:4:1",
                            "type": ""
                          }
                        ],
                        "src": "3369:120:1"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3628:764:1",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3638:12:1",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "3649:1:1",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulTypedName",
                                  "src": "3642:3:1",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3659:30:1",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "3682:6:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3676:5:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3676:13:1"
                              },
                              "variables": [
                                {
                                  "name": "slotValue",
                                  "nodeType": "YulTypedName",
                                  "src": "3663:9:1",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3698:50:1",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "slotValue",
                                    "nodeType": "YulIdentifier",
                                    "src": "3738:9:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "extract_byte_array_length",
                                  "nodeType": "YulIdentifier",
                                  "src": "3712:25:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3712:36:1"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "3702:6:1",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3757:11:1",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "3767:1:1",
                                "type": "",
                                "value": "1"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3761:2:1",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "cases": [
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "3818:184:1",
                                    "statements": [
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "3839:3:1"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "slotValue",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3848:9:1"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "3859:66:1",
                                                  "type": "",
                                                  "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "and",
                                                "nodeType": "YulIdentifier",
                                                "src": "3844:3:1"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "3844:82:1"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "3832:6:1"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "3832:95:1"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "3832:95:1"
                                      },
                                      {
                                        "nodeType": "YulAssignment",
                                        "src": "3940:52:1",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "3951:3:1"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "length",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3960:6:1"
                                                },
                                                {
                                                  "arguments": [
                                                    {
                                                      "arguments": [
                                                        {
                                                          "name": "length",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "3982:6:1"
                                                        }
                                                      ],
                                                      "functionName": {
                                                        "name": "iszero",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3975:6:1"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "3975:14:1"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "iszero",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3968:6:1"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "3968:22:1"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mul",
                                                "nodeType": "YulIdentifier",
                                                "src": "3956:3:1"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "3956:35:1"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "3947:3:1"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "3947:45:1"
                                        },
                                        "variableNames": [
                                          {
                                            "name": "ret",
                                            "nodeType": "YulIdentifier",
                                            "src": "3940:3:1"
                                          }
                                        ]
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "3811:191:1",
                                  "value": {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3816:1:1",
                                    "type": "",
                                    "value": "0"
                                  }
                                },
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "4018:349:1",
                                    "statements": [
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "4039:1:1",
                                              "type": "",
                                              "value": "0"
                                            },
                                            {
                                              "name": "value0",
                                              "nodeType": "YulIdentifier",
                                              "src": "4042:6:1"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "4032:6:1"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4032:17:1"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "4032:17:1"
                                      },
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "4062:14:1",
                                        "value": {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4072:4:1",
                                          "type": "",
                                          "value": "0x20"
                                        },
                                        "variables": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulTypedName",
                                            "src": "4066:2:1",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "4089:31:1",
                                        "value": {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "4114:1:1",
                                              "type": "",
                                              "value": "0"
                                            },
                                            {
                                              "name": "_2",
                                              "nodeType": "YulIdentifier",
                                              "src": "4117:2:1"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "keccak256",
                                            "nodeType": "YulIdentifier",
                                            "src": "4104:9:1"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4104:16:1"
                                        },
                                        "variables": [
                                          {
                                            "name": "dataPos",
                                            "nodeType": "YulTypedName",
                                            "src": "4093:7:1",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "4133:10:1",
                                        "value": {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4142:1:1",
                                          "type": "",
                                          "value": "0"
                                        },
                                        "variables": [
                                          {
                                            "name": "i",
                                            "nodeType": "YulTypedName",
                                            "src": "4137:1:1",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "4210:111:1",
                                          "statements": [
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "pos",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4239:3:1"
                                                      },
                                                      {
                                                        "name": "i",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4244:1:1"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "add",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "4235:3:1"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "4235:11:1"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "dataPos",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4254:7:1"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "sload",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "4248:5:1"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "4248:14:1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "mstore",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4228:6:1"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "4228:35:1"
                                              },
                                              "nodeType": "YulExpressionStatement",
                                              "src": "4228:35:1"
                                            },
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "4280:27:1",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "dataPos",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4295:7:1"
                                                  },
                                                  {
                                                    "name": "_1",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4304:2:1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4291:3:1"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "4291:16:1"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "dataPos",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4280:7:1"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "condition": {
                                          "arguments": [
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "4167:1:1"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "4170:6:1"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "lt",
                                            "nodeType": "YulIdentifier",
                                            "src": "4164:2:1"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4164:13:1"
                                        },
                                        "nodeType": "YulForLoop",
                                        "post": {
                                          "nodeType": "YulBlock",
                                          "src": "4178:19:1",
                                          "statements": [
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "4180:15:1",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "i",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4189:1:1"
                                                  },
                                                  {
                                                    "name": "_2",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4192:2:1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4185:3:1"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "4185:10:1"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4180:1:1"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "pre": {
                                          "nodeType": "YulBlock",
                                          "src": "4160:3:1",
                                          "statements": []
                                        },
                                        "src": "4156:165:1"
                                      },
                                      {
                                        "nodeType": "YulAssignment",
                                        "src": "4334:23:1",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "4345:3:1"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "4350:6:1"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "4341:3:1"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4341:16:1"
                                        },
                                        "variableNames": [
                                          {
                                            "name": "ret",
                                            "nodeType": "YulIdentifier",
                                            "src": "4334:3:1"
                                          }
                                        ]
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "4011:356:1",
                                  "value": {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4016:1:1",
                                    "type": "",
                                    "value": "1"
                                  }
                                }
                              ],
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "slotValue",
                                    "nodeType": "YulIdentifier",
                                    "src": "3788:9:1"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3799:2:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "3784:3:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3784:18:1"
                              },
                              "nodeType": "YulSwitch",
                              "src": "3777:590:1"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4376:10:1",
                              "value": {
                                "name": "ret",
                                "nodeType": "YulIdentifier",
                                "src": "4383:3:1"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "4376:3:1"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_storage__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "3604:3:1",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3609:6:1",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "3620:3:1",
                            "type": ""
                          }
                        ],
                        "src": "3494:898:1"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4477:464:1",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4510:425:1",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "4524:11:1",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "4534:1:1",
                                      "type": "",
                                      "value": "0"
                                    },
                                    "variables": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulTypedName",
                                        "src": "4528:2:1",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "4555:2:1"
                                        },
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "4559:5:1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "4548:6:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4548:17:1"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4548:17:1"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "4578:31:1",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "4600:2:1"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4604:4:1",
                                          "type": "",
                                          "value": "0x20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "keccak256",
                                        "nodeType": "YulIdentifier",
                                        "src": "4590:9:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4590:19:1"
                                    },
                                    "variables": [
                                      {
                                        "name": "data",
                                        "nodeType": "YulTypedName",
                                        "src": "4582:4:1",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "4622:57:1",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "data",
                                          "nodeType": "YulIdentifier",
                                          "src": "4645:4:1"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "4655:1:1",
                                              "type": "",
                                              "value": "5"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "startIndex",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4662:10:1"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "4674:2:1",
                                                  "type": "",
                                                  "value": "31"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "4658:3:1"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "4658:19:1"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shr",
                                            "nodeType": "YulIdentifier",
                                            "src": "4651:3:1"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4651:27:1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "4641:3:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4641:38:1"
                                    },
                                    "variables": [
                                      {
                                        "name": "deleteStart",
                                        "nodeType": "YulTypedName",
                                        "src": "4626:11:1",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "4716:23:1",
                                      "statements": [
                                        {
                                          "nodeType": "YulAssignment",
                                          "src": "4718:19:1",
                                          "value": {
                                            "name": "data",
                                            "nodeType": "YulIdentifier",
                                            "src": "4733:4:1"
                                          },
                                          "variableNames": [
                                            {
                                              "name": "deleteStart",
                                              "nodeType": "YulIdentifier",
                                              "src": "4718:11:1"
                                            }
                                          ]
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "startIndex",
                                          "nodeType": "YulIdentifier",
                                          "src": "4698:10:1"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4710:4:1",
                                          "type": "",
                                          "value": "0x20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "lt",
                                        "nodeType": "YulIdentifier",
                                        "src": "4695:2:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4695:20:1"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "4692:47:1"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "4752:41:1",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "data",
                                          "nodeType": "YulIdentifier",
                                          "src": "4766:4:1"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "4776:1:1",
                                              "type": "",
                                              "value": "5"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "len",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4783:3:1"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "4788:2:1",
                                                  "type": "",
                                                  "value": "31"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "4779:3:1"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "4779:12:1"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shr",
                                            "nodeType": "YulIdentifier",
                                            "src": "4772:3:1"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4772:20:1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "4762:3:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4762:31:1"
                                    },
                                    "variables": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulTypedName",
                                        "src": "4756:2:1",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "4806:24:1",
                                    "value": {
                                      "name": "deleteStart",
                                      "nodeType": "YulIdentifier",
                                      "src": "4819:11:1"
                                    },
                                    "variables": [
                                      {
                                        "name": "start",
                                        "nodeType": "YulTypedName",
                                        "src": "4810:5:1",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "4904:21:1",
                                      "statements": [
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "start",
                                                "nodeType": "YulIdentifier",
                                                "src": "4913:5:1"
                                              },
                                              {
                                                "name": "_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "4920:2:1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sstore",
                                              "nodeType": "YulIdentifier",
                                              "src": "4906:6:1"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "4906:17:1"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "4906:17:1"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "start",
                                          "nodeType": "YulIdentifier",
                                          "src": "4854:5:1"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "4861:2:1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "lt",
                                        "nodeType": "YulIdentifier",
                                        "src": "4851:2:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4851:13:1"
                                    },
                                    "nodeType": "YulForLoop",
                                    "post": {
                                      "nodeType": "YulBlock",
                                      "src": "4865:26:1",
                                      "statements": [
                                        {
                                          "nodeType": "YulAssignment",
                                          "src": "4867:22:1",
                                          "value": {
                                            "arguments": [
                                              {
                                                "name": "start",
                                                "nodeType": "YulIdentifier",
                                                "src": "4880:5:1"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4887:1:1",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "4876:3:1"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "4876:13:1"
                                          },
                                          "variableNames": [
                                            {
                                              "name": "start",
                                              "nodeType": "YulIdentifier",
                                              "src": "4867:5:1"
                                            }
                                          ]
                                        }
                                      ]
                                    },
                                    "pre": {
                                      "nodeType": "YulBlock",
                                      "src": "4847:3:1",
                                      "statements": []
                                    },
                                    "src": "4843:82:1"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "len",
                                    "nodeType": "YulIdentifier",
                                    "src": "4493:3:1"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4498:2:1",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4490:2:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4490:11:1"
                              },
                              "nodeType": "YulIf",
                              "src": "4487:448:1"
                            }
                          ]
                        },
                        "name": "clean_up_bytearray_end_slots_bytes_storage",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "4449:5:1",
                            "type": ""
                          },
                          {
                            "name": "len",
                            "nodeType": "YulTypedName",
                            "src": "4456:3:1",
                            "type": ""
                          },
                          {
                            "name": "startIndex",
                            "nodeType": "YulTypedName",
                            "src": "4461:10:1",
                            "type": ""
                          }
                        ],
                        "src": "4397:544:1"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5031:141:1",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "5041:125:1",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "data",
                                        "nodeType": "YulIdentifier",
                                        "src": "5056:4:1"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "5074:1:1",
                                                    "type": "",
                                                    "value": "3"
                                                  },
                                                  {
                                                    "name": "len",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "5077:3:1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "5070:3:1"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "5070:11:1"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5083:66:1",
                                                "type": "",
                                                "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shr",
                                              "nodeType": "YulIdentifier",
                                              "src": "5066:3:1"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "5066:84:1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "not",
                                          "nodeType": "YulIdentifier",
                                          "src": "5062:3:1"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5062:89:1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5052:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5052:100:1"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5158:1:1",
                                        "type": "",
                                        "value": "1"
                                      },
                                      {
                                        "name": "len",
                                        "nodeType": "YulIdentifier",
                                        "src": "5161:3:1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "5154:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5154:11:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "5049:2:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5049:117:1"
                              },
                              "variableNames": [
                                {
                                  "name": "used",
                                  "nodeType": "YulIdentifier",
                                  "src": "5041:4:1"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "extract_used_part_and_set_length_of_short_byte_array",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "5008:4:1",
                            "type": ""
                          },
                          {
                            "name": "len",
                            "nodeType": "YulTypedName",
                            "src": "5014:3:1",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "used",
                            "nodeType": "YulTypedName",
                            "src": "5022:4:1",
                            "type": ""
                          }
                        ],
                        "src": "4946:226:1"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5271:1373:1",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5281:24:1",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "src",
                                    "nodeType": "YulIdentifier",
                                    "src": "5301:3:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5295:5:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5295:10:1"
                              },
                              "variables": [
                                {
                                  "name": "newLen",
                                  "nodeType": "YulTypedName",
                                  "src": "5285:6:1",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5348:22:1",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "5350:16:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5350:18:1"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5350:18:1"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "newLen",
                                    "nodeType": "YulIdentifier",
                                    "src": "5320:6:1"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5328:18:1",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5317:2:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5317:30:1"
                              },
                              "nodeType": "YulIf",
                              "src": "5314:56:1"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "slot",
                                    "nodeType": "YulIdentifier",
                                    "src": "5422:4:1"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "slot",
                                            "nodeType": "YulIdentifier",
                                            "src": "5460:4:1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sload",
                                          "nodeType": "YulIdentifier",
                                          "src": "5454:5:1"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5454:11:1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "extract_byte_array_length",
                                      "nodeType": "YulIdentifier",
                                      "src": "5428:25:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5428:38:1"
                                  },
                                  {
                                    "name": "newLen",
                                    "nodeType": "YulIdentifier",
                                    "src": "5468:6:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "clean_up_bytearray_end_slots_bytes_storage",
                                  "nodeType": "YulIdentifier",
                                  "src": "5379:42:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5379:96:1"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5379:96:1"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5484:18:1",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "5501:1:1",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "srcOffset",
                                  "nodeType": "YulTypedName",
                                  "src": "5488:9:1",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5511:23:1",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "5530:4:1",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "srcOffset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5515:11:1",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5543:24:1",
                              "value": {
                                "name": "srcOffset_1",
                                "nodeType": "YulIdentifier",
                                "src": "5556:11:1"
                              },
                              "variableNames": [
                                {
                                  "name": "srcOffset",
                                  "nodeType": "YulIdentifier",
                                  "src": "5543:9:1"
                                }
                              ]
                            },
                            {
                              "cases": [
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "5613:774:1",
                                    "statements": [
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "5627:94:1",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "newLen",
                                              "nodeType": "YulIdentifier",
                                              "src": "5646:6:1"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "5654:66:1",
                                              "type": "",
                                              "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "5642:3:1"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "5642:79:1"
                                        },
                                        "variables": [
                                          {
                                            "name": "loopEnd",
                                            "nodeType": "YulTypedName",
                                            "src": "5631:7:1",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "5734:48:1",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "slot",
                                              "nodeType": "YulIdentifier",
                                              "src": "5777:4:1"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "array_dataslot_bytes_storage",
                                            "nodeType": "YulIdentifier",
                                            "src": "5748:28:1"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "5748:34:1"
                                        },
                                        "variables": [
                                          {
                                            "name": "dstPtr",
                                            "nodeType": "YulTypedName",
                                            "src": "5738:6:1",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "5795:10:1",
                                        "value": {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5804:1:1",
                                          "type": "",
                                          "value": "0"
                                        },
                                        "variables": [
                                          {
                                            "name": "i",
                                            "nodeType": "YulTypedName",
                                            "src": "5799:1:1",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "5882:172:1",
                                          "statements": [
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "name": "dstPtr",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "5907:6:1"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "name": "src",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "5925:3:1"
                                                          },
                                                          {
                                                            "name": "srcOffset",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "5930:9:1"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "add",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "5921:3:1"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "5921:19:1"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "mload",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "5915:5:1"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "5915:26:1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "sstore",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "5900:6:1"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "5900:42:1"
                                              },
                                              "nodeType": "YulExpressionStatement",
                                              "src": "5900:42:1"
                                            },
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "5959:24:1",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "dstPtr",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "5973:6:1"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "5981:1:1",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "5969:3:1"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "5969:14:1"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "dstPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "5959:6:1"
                                                }
                                              ]
                                            },
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "6000:40:1",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "srcOffset",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "6017:9:1"
                                                  },
                                                  {
                                                    "name": "srcOffset_1",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "6028:11:1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "6013:3:1"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "6013:27:1"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "srcOffset",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "6000:9:1"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "condition": {
                                          "arguments": [
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "5829:1:1"
                                            },
                                            {
                                              "name": "loopEnd",
                                              "nodeType": "YulIdentifier",
                                              "src": "5832:7:1"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "lt",
                                            "nodeType": "YulIdentifier",
                                            "src": "5826:2:1"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "5826:14:1"
                                        },
                                        "nodeType": "YulForLoop",
                                        "post": {
                                          "nodeType": "YulBlock",
                                          "src": "5841:28:1",
                                          "statements": [
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "5843:24:1",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "i",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "5852:1:1"
                                                  },
                                                  {
                                                    "name": "srcOffset_1",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "5855:11:1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "5848:3:1"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "5848:19:1"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "5843:1:1"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "pre": {
                                          "nodeType": "YulBlock",
                                          "src": "5822:3:1",
                                          "statements": []
                                        },
                                        "src": "5818:236:1"
                                      },
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "6102:226:1",
                                          "statements": [
                                            {
                                              "nodeType": "YulVariableDeclaration",
                                              "src": "6120:43:1",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "src",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "6147:3:1"
                                                      },
                                                      {
                                                        "name": "srcOffset",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "6152:9:1"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "add",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "6143:3:1"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "6143:19:1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "mload",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "6137:5:1"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "6137:26:1"
                                              },
                                              "variables": [
                                                {
                                                  "name": "lastValue",
                                                  "nodeType": "YulTypedName",
                                                  "src": "6124:9:1",
                                                  "type": ""
                                                }
                                              ]
                                            },
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "name": "dstPtr",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "6187:6:1"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "lastValue",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "6199:9:1"
                                                      },
                                                      {
                                                        "arguments": [
                                                          {
                                                            "arguments": [
                                                              {
                                                                "arguments": [
                                                                  {
                                                                    "arguments": [
                                                                      {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6226:1:1",
                                                                        "type": "",
                                                                        "value": "3"
                                                                      },
                                                                      {
                                                                        "name": "newLen",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6229:6:1"
                                                                      }
                                                                    ],
                                                                    "functionName": {
                                                                      "name": "shl",
                                                                      "nodeType": "YulIdentifier",
                                                                      "src": "6222:3:1"
                                                                    },
                                                                    "nodeType": "YulFunctionCall",
                                                                    "src": "6222:14:1"
                                                                  },
                                                                  {
                                                                    "kind": "number",
                                                                    "nodeType": "YulLiteral",
                                                                    "src": "6238:3:1",
                                                                    "type": "",
                                                                    "value": "248"
                                                                  }
                                                                ],
                                                                "functionName": {
                                                                  "name": "and",
                                                                  "nodeType": "YulIdentifier",
                                                                  "src": "6218:3:1"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6218:24:1"
                                                              },
                                                              {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "6244:66:1",
                                                                "type": "",
                                                                "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                                              }
                                                            ],
                                                            "functionName": {
                                                              "name": "shr",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "6214:3:1"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "6214:97:1"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "not",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "6210:3:1"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "6210:102:1"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "and",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "6195:3:1"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "6195:118:1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "sstore",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "6180:6:1"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "6180:134:1"
                                              },
                                              "nodeType": "YulExpressionStatement",
                                              "src": "6180:134:1"
                                            }
                                          ]
                                        },
                                        "condition": {
                                          "arguments": [
                                            {
                                              "name": "loopEnd",
                                              "nodeType": "YulIdentifier",
                                              "src": "6073:7:1"
                                            },
                                            {
                                              "name": "newLen",
                                              "nodeType": "YulIdentifier",
                                              "src": "6082:6:1"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "lt",
                                            "nodeType": "YulIdentifier",
                                            "src": "6070:2:1"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6070:19:1"
                                        },
                                        "nodeType": "YulIf",
                                        "src": "6067:261:1"
                                      },
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "name": "slot",
                                              "nodeType": "YulIdentifier",
                                              "src": "6348:4:1"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "6362:1:1",
                                                      "type": "",
                                                      "value": "1"
                                                    },
                                                    {
                                                      "name": "newLen",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "6365:6:1"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "shl",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "6358:3:1"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "6358:14:1"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "6374:1:1",
                                                  "type": "",
                                                  "value": "1"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "6354:3:1"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "6354:22:1"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "6341:6:1"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6341:36:1"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "6341:36:1"
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "5606:781:1",
                                  "value": {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5611:1:1",
                                    "type": "",
                                    "value": "1"
                                  }
                                },
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "6404:234:1",
                                    "statements": [
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "6418:14:1",
                                        "value": {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6431:1:1",
                                          "type": "",
                                          "value": "0"
                                        },
                                        "variables": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulTypedName",
                                            "src": "6422:5:1",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "6467:67:1",
                                          "statements": [
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "6485:35:1",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "src",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "6504:3:1"
                                                      },
                                                      {
                                                        "name": "srcOffset",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "6509:9:1"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "add",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "6500:3:1"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "6500:19:1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "mload",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "6494:5:1"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "6494:26:1"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "value",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "6485:5:1"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "condition": {
                                          "name": "newLen",
                                          "nodeType": "YulIdentifier",
                                          "src": "6448:6:1"
                                        },
                                        "nodeType": "YulIf",
                                        "src": "6445:89:1"
                                      },
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "name": "slot",
                                              "nodeType": "YulIdentifier",
                                              "src": "6554:4:1"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "value",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "6613:5:1"
                                                },
                                                {
                                                  "name": "newLen",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "6620:6:1"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "extract_used_part_and_set_length_of_short_byte_array",
                                                "nodeType": "YulIdentifier",
                                                "src": "6560:52:1"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "6560:67:1"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "6547:6:1"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6547:81:1"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "6547:81:1"
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "6396:242:1",
                                  "value": "default"
                                }
                              ],
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "newLen",
                                    "nodeType": "YulIdentifier",
                                    "src": "5586:6:1"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5594:2:1",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5583:2:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5583:14:1"
                              },
                              "nodeType": "YulSwitch",
                              "src": "5576:1062:1"
                            }
                          ]
                        },
                        "name": "copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "slot",
                            "nodeType": "YulTypedName",
                            "src": "5256:4:1",
                            "type": ""
                          },
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "5262:3:1",
                            "type": ""
                          }
                        ],
                        "src": "5177:1467:1"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_uint16(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffff))) { revert(0, 0) }\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_bytes(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let _1 := calldataload(offset)\n        let _2 := 0xffffffffffffffff\n        if gt(_1, _2) { panic_error_0x41() }\n        let _3 := 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_1, 0x1f), _3), 63), _3))\n        if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _1)\n        if gt(add(add(offset, _1), 0x20), end) { revert(0, 0) }\n        calldatacopy(add(memPtr, 0x20), add(offset, 0x20), _1)\n        mstore(add(add(memPtr, _1), 0x20), 0)\n        array := memPtr\n    }\n    function abi_decode_tuple_t_uint16t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_uint16(headStart)\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value1 := abi_decode_bytes(add(headStart, offset), dataEnd)\n    }\n    function abi_encode_tuple_t_uint32_t_uint64_t_bytes20__to_t_uint32_t_uint64_t_bytes20__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, and(value0, 0xffffffff))\n        mstore(add(headStart, 32), and(value1, 0xffffffffffffffff))\n        mstore(add(headStart, 64), and(value2, 0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000))\n    }\n    function abi_decode_tuple_t_uint16t_bytes_memory_ptrt_uint32t_uint64t_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_uint16(headStart)\n        let offset := calldataload(add(headStart, 32))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        value1 := abi_decode_bytes(add(headStart, offset), dataEnd)\n        let value := calldataload(add(headStart, 64))\n        if iszero(eq(value, and(value, 0xffffffff))) { revert(0, 0) }\n        value2 := value\n        let value_1 := calldataload(add(headStart, 96))\n        if iszero(eq(value_1, and(value_1, _1))) { revert(0, 0) }\n        value3 := value_1\n        let offset_1 := calldataload(add(headStart, 128))\n        if gt(offset_1, _1) { revert(0, 0) }\n        value4 := abi_decode_bytes(add(headStart, offset_1), dataEnd)\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, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function array_dataslot_bytes_storage(ptr) -> data\n    {\n        mstore(0, ptr)\n        data := keccak256(0, 0x20)\n    }\n    function abi_encode_tuple_packed_t_bytes_storage__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let ret := 0\n        let slotValue := sload(value0)\n        let length := extract_byte_array_length(slotValue)\n        let _1 := 1\n        switch and(slotValue, _1)\n        case 0 {\n            mstore(pos, and(slotValue, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00))\n            ret := add(pos, mul(length, iszero(iszero(length))))\n        }\n        case 1 {\n            mstore(0, value0)\n            let _2 := 0x20\n            let dataPos := keccak256(0, _2)\n            let i := 0\n            for { } lt(i, length) { i := add(i, _2) }\n            {\n                mstore(add(pos, i), sload(dataPos))\n                dataPos := add(dataPos, _1)\n            }\n            ret := add(pos, length)\n        }\n        end := ret\n    }\n    function clean_up_bytearray_end_slots_bytes_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), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff))), shl(1, len))\n    }\n    function copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage(slot, src)\n    {\n        let newLen := mload(src)\n        if gt(newLen, 0xffffffffffffffff) { panic_error_0x41() }\n        clean_up_bytearray_end_slots_bytes_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, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)\n            let dstPtr := array_dataslot_bytes_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), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff))))\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": 1,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100365760003560e01c8063087991bc1461003b5780638581a99c1461009f575b600080fd5b61004e6100493660046102e8565b6100b4565b6040805163ffffffff909416845267ffffffffffffffff90921660208401527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169082015260600160405180910390f35b6100b26100ad366004610336565b610132565b005b600080548190819061ffff8681169116146100ce57600080fd5b60016040516100dd9190610435565b60405180910390208480519060200120146100f757600080fd5b505060025463ffffffff8116915067ffffffffffffffff640100000000820416906c01000000000000000000000000900460601b9250925092565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff8716179055600161016c8582610518565b506002805467ffffffffffffffff8416640100000000027fffffffffffffffffffffffffffffffffffffffff00000000000000000000000090911663ffffffff8616171790558051156101f057805160208201206002805460609290921c6c01000000000000000000000000026bffffffffffffffffffffffff9092169190911790555b5050505050565b803561ffff8116811461020957600080fd5b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261024e57600080fd5b813567ffffffffffffffff808211156102695761026961020e565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156102af576102af61020e565b816040528381528660208588010111156102c857600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080604083850312156102fb57600080fd5b610304836101f7565b9150602083013567ffffffffffffffff81111561032057600080fd5b61032c8582860161023d565b9150509250929050565b600080600080600060a0868803121561034e57600080fd5b610357866101f7565b9450602086013567ffffffffffffffff8082111561037457600080fd5b61038089838a0161023d565b95506040880135915063ffffffff8216821461039b57600080fd5b90935060608701359080821682146103b257600080fd5b909250608087013590808211156103c857600080fd5b506103d58882890161023d565b9150509295509295909350565b600181811c908216806103f657607f821691505b60208210810361042f577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b6000808354610443816103e2565b6001828116801561045b576001811461048e576104bd565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00841687528215158302870194506104bd565b8760005260208060002060005b858110156104b45781548a82015290840190820161049b565b50505082870194505b50929695505050505050565b601f82111561051357600081815260208120601f850160051c810160208610156104f05750805b601f850160051c820191505b8181101561050f578281556001016104fc565b5050505b505050565b815167ffffffffffffffff8111156105325761053261020e565b6105468161054084546103e2565b846104c9565b602080601f83116001811461059957600084156105635750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b17855561050f565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b828110156105e6578886015182559484019460019091019084016105c7565b508582101561062257878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b0190555056fea2646970667358221220f970faccf48130673cb60200b7626b2ec3f41b5592fa11117db24ad592d81c7264736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x87991BC EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0x8581A99C EQ PUSH2 0x9F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4E PUSH2 0x49 CALLDATASIZE PUSH1 0x4 PUSH2 0x2E8 JUMP JUMPDEST PUSH2 0xB4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP5 AND DUP5 MSTORE PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xB2 PUSH2 0xAD CALLDATASIZE PUSH1 0x4 PUSH2 0x336 JUMP JUMPDEST PUSH2 0x132 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 DUP2 SWAP1 PUSH2 0xFFFF DUP7 DUP2 AND SWAP2 AND EQ PUSH2 0xCE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x40 MLOAD PUSH2 0xDD SWAP2 SWAP1 PUSH2 0x435 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP5 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 EQ PUSH2 0xF7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x2 SLOAD PUSH4 0xFFFFFFFF DUP2 AND SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF PUSH5 0x100000000 DUP3 DIV AND SWAP1 PUSH13 0x1000000000000000000000000 SWAP1 DIV PUSH1 0x60 SHL SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 AND PUSH2 0xFFFF DUP8 AND OR SWAP1 SSTORE PUSH1 0x1 PUSH2 0x16C DUP6 DUP3 PUSH2 0x518 JUMP JUMPDEST POP PUSH1 0x2 DUP1 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP5 AND PUSH5 0x100000000 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 SWAP1 SWAP2 AND PUSH4 0xFFFFFFFF DUP7 AND OR OR SWAP1 SSTORE DUP1 MLOAD ISZERO PUSH2 0x1F0 JUMPI DUP1 MLOAD PUSH1 0x20 DUP3 ADD KECCAK256 PUSH1 0x2 DUP1 SLOAD PUSH1 0x60 SWAP3 SWAP1 SWAP3 SHR PUSH13 0x1000000000000000000000000 MUL PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST POP POP POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x209 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x24E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x269 JUMPI PUSH2 0x269 PUSH2 0x20E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP4 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x2AF JUMPI PUSH2 0x2AF PUSH2 0x20E JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP4 DUP2 MSTORE DUP7 PUSH1 0x20 DUP6 DUP9 ADD ADD GT ISZERO PUSH2 0x2C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 PUSH1 0x20 DUP8 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP6 DUP4 ADD ADD MSTORE DUP1 SWAP5 POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x304 DUP4 PUSH2 0x1F7 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x320 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x32C DUP6 DUP3 DUP7 ADD PUSH2 0x23D JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x34E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x357 DUP7 PUSH2 0x1F7 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x374 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x380 DUP10 DUP4 DUP11 ADD PUSH2 0x23D JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP2 POP PUSH4 0xFFFFFFFF DUP3 AND DUP3 EQ PUSH2 0x39B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP1 DUP1 DUP3 AND DUP3 EQ PUSH2 0x3B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x3C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3D5 DUP9 DUP3 DUP10 ADD PUSH2 0x23D JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x3F6 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x42F JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 SLOAD PUSH2 0x443 DUP2 PUSH2 0x3E2 JUMP JUMPDEST PUSH1 0x1 DUP3 DUP2 AND DUP1 ISZERO PUSH2 0x45B JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x48E JUMPI PUSH2 0x4BD JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP5 AND DUP8 MSTORE DUP3 ISZERO ISZERO DUP4 MUL DUP8 ADD SWAP5 POP PUSH2 0x4BD JUMP JUMPDEST DUP8 PUSH1 0x0 MSTORE PUSH1 0x20 DUP1 PUSH1 0x0 KECCAK256 PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x4B4 JUMPI DUP2 SLOAD DUP11 DUP3 ADD MSTORE SWAP1 DUP5 ADD SWAP1 DUP3 ADD PUSH2 0x49B JUMP JUMPDEST POP POP POP DUP3 DUP8 ADD SWAP5 POP JUMPDEST POP SWAP3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x513 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP7 LT ISZERO PUSH2 0x4F0 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x50F JUMPI DUP3 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x4FC JUMP JUMPDEST POP POP POP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x532 JUMPI PUSH2 0x532 PUSH2 0x20E JUMP JUMPDEST PUSH2 0x546 DUP2 PUSH2 0x540 DUP5 SLOAD PUSH2 0x3E2 JUMP JUMPDEST DUP5 PUSH2 0x4C9 JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH2 0x599 JUMPI PUSH1 0x0 DUP5 ISZERO PUSH2 0x563 JUMPI POP DUP6 DUP4 ADD MLOAD JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x3 DUP7 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP6 SWAP1 SHL OR DUP6 SSTORE PUSH2 0x50F JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x5E6 JUMPI DUP9 DUP7 ADD MLOAD DUP3 SSTORE SWAP5 DUP5 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 DUP5 ADD PUSH2 0x5C7 JUMP JUMPDEST POP DUP6 DUP3 LT ISZERO PUSH2 0x622 JUMPI DUP8 DUP6 ADD MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x3 DUP9 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF9 PUSH17 0xFACCF48130673CB60200B7626B2EC3F41B SSTORE SWAP3 STATICCALL GT GT PUSH30 0xB24AD592D81C7264736F6C63430008110033000000000000000000000000 ",
              "sourceMap": "25:885:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;583:325;;;;;;:::i;:::-;;:::i;:::-;;;;1774:10:1;1762:23;;;1744:42;;1834:18;1822:31;;;1817:2;1802:18;;1795:59;1902:66;1890:79;1870:18;;;1863:107;1732:2;1717:18;583:325:0;;;;;;;163:414;;;;;;:::i;:::-;;:::i;:::-;;583:325;692:6;783:12;;692:6;;;;783:12;772:23;;;783:12;;772:23;764:32;;;;;;843:12;833:23;;;;;;:::i;:::-;;;;;;;;824:4;814:15;;;;;;:42;806:51;;;;;;-1:-1:-1;;875:9:0;;;;;;-1:-1:-1;886:8:0;;;;;;896:4;;;;;583:325;;;;;:::o;163:414::-;351:12;:28;;;;;;;;;;-1:-1:-1;389:28:0;404:13;-1:-1:-1;389:28:0;:::i;:::-;-1:-1:-1;427:9:0;:22;;459:20;;;;;;;;;427:22;;;459:20;;;;493:13;;:18;489:82;;542:17;;;;;;527:4;:33;;;;;;;;;;;;;;;;;;;489:82;163:414;;;;;:::o;14:159:1:-;81:20;;141:6;130:18;;120:29;;110:57;;163:1;160;153:12;110:57;14:159;;;:::o;178:184::-;230:77;227:1;220:88;327:4;324:1;317:15;351:4;348:1;341:15;367:777;409:5;462:3;455:4;447:6;443:17;439:27;429:55;;480:1;477;470:12;429:55;516:6;503:20;542:18;579:2;575;572:10;569:36;;;585:18;;:::i;:::-;719:2;713:9;781:4;773:13;;624:66;769:22;;;793:2;765:31;761:40;749:53;;;817:18;;;837:22;;;814:46;811:72;;;863:18;;:::i;:::-;903:10;899:2;892:22;938:2;930:6;923:18;984:3;977:4;972:2;964:6;960:15;956:26;953:35;950:55;;;1001:1;998;991:12;950:55;1065:2;1058:4;1050:6;1046:17;1039:4;1031:6;1027:17;1014:54;1112:1;1105:4;1100:2;1092:6;1088:15;1084:26;1077:37;1132:6;1123:15;;;;;;367:777;;;;:::o;1149:392::-;1225:6;1233;1286:2;1274:9;1265:7;1261:23;1257:32;1254:52;;;1302:1;1299;1292:12;1254:52;1325:28;1343:9;1325:28;:::i;:::-;1315:38;;1404:2;1393:9;1389:18;1376:32;1431:18;1423:6;1420:30;1417:50;;;1463:1;1460;1453:12;1417:50;1486:49;1527:7;1518:6;1507:9;1503:22;1486:49;:::i;:::-;1476:59;;;1149:392;;;;;:::o;1981:941::-;2091:6;2099;2107;2115;2123;2176:3;2164:9;2155:7;2151:23;2147:33;2144:53;;;2193:1;2190;2183:12;2144:53;2216:28;2234:9;2216:28;:::i;:::-;2206:38;;2295:2;2284:9;2280:18;2267:32;2318:18;2359:2;2351:6;2348:14;2345:34;;;2375:1;2372;2365:12;2345:34;2398:49;2439:7;2430:6;2419:9;2415:22;2398:49;:::i;:::-;2388:59;;2497:2;2486:9;2482:18;2469:32;2456:45;;2541:10;2534:5;2530:22;2523:5;2520:33;2510:61;;2567:1;2564;2557:12;2510:61;2590:5;;-1:-1:-1;2647:2:1;2632:18;;2619:32;;2682:16;;;2670:29;;2660:57;;2713:1;2710;2703:12;2660:57;2736:7;;-1:-1:-1;2796:3:1;2781:19;;2768:33;;2813:16;;;2810:36;;;2842:1;2839;2832:12;2810:36;;2865:51;2908:7;2897:8;2886:9;2882:24;2865:51;:::i;:::-;2855:61;;;1981:941;;;;;;;;:::o;2927:437::-;3006:1;3002:12;;;;3049;;;3070:61;;3124:4;3116:6;3112:17;3102:27;;3070:61;3177:2;3169:6;3166:14;3146:18;3143:38;3140:218;;3214:77;3211:1;3204:88;3315:4;3312:1;3305:15;3343:4;3340:1;3333:15;3140:218;;2927:437;;;:::o;3494:898::-;3620:3;3649:1;3682:6;3676:13;3712:36;3738:9;3712:36;:::i;:::-;3767:1;3784:18;;;3811:191;;;;4016:1;4011:356;;;;3777:590;;3811:191;3859:66;3848:9;3844:82;3839:3;3832:95;3982:6;3975:14;3968:22;3960:6;3956:35;3951:3;3947:45;3940:52;;3811:191;;4011:356;4042:6;4039:1;4032:17;4072:4;4117:2;4114:1;4104:16;4142:1;4156:165;4170:6;4167:1;4164:13;4156:165;;;4248:14;;4235:11;;;4228:35;4291:16;;;;4185:10;;4156:165;;;4160:3;;;4350:6;4345:3;4341:16;4334:23;;3777:590;-1:-1:-1;4383:3:1;;3494:898;-1:-1:-1;;;;;;3494:898:1:o;4397:544::-;4498:2;4493:3;4490:11;4487:448;;;4534:1;4559:5;4555:2;4548:17;4604:4;4600:2;4590:19;4674:2;4662:10;4658:19;4655:1;4651:27;4645:4;4641:38;4710:4;4698:10;4695:20;4692:47;;;-1:-1:-1;4733:4:1;4692:47;4788:2;4783:3;4779:12;4776:1;4772:20;4766:4;4762:31;4752:41;;4843:82;4861:2;4854:5;4851:13;4843:82;;;4906:17;;;4887:1;4876:13;4843:82;;;4847:3;;;4487:448;4397:544;;;:::o;5177:1467::-;5301:3;5295:10;5328:18;5320:6;5317:30;5314:56;;;5350:18;;:::i;:::-;5379:96;5468:6;5428:38;5460:4;5454:11;5428:38;:::i;:::-;5422:4;5379:96;:::i;:::-;5530:4;;5594:2;5583:14;;5611:1;5606:781;;;;6431:1;6448:6;6445:89;;;-1:-1:-1;6500:19:1;;;6494:26;6445:89;5083:66;5074:1;5070:11;;;5066:84;5062:89;5052:100;5158:1;5154:11;;;5049:117;6547:81;;5576:1062;;5606:781;3441:1;3434:14;;;3478:4;3465:18;;5654:66;5642:79;;;5818:236;5832:7;5829:1;5826:14;5818:236;;;5921:19;;;5915:26;5900:42;;6013:27;;;;5981:1;5969:14;;;;5848:19;;5818:236;;;5822:3;6082:6;6073:7;6070:19;6067:261;;;6143:19;;;6137:26;6244:66;6226:1;6222:14;;;6238:3;6218:24;6214:97;6210:102;6195:118;6180:134;;6067:261;-1:-1:-1;;;;;6374:1:1;6358:14;;;6354:22;6341:36;;-1:-1:-1;5177:1467:1:o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "328000",
                "executionCost": "368",
                "totalCost": "328368"
              },
              "external": {
                "rrdata(uint16,bytes)": "infinite",
                "setData(uint16,bytes,uint32,uint64,bytes)": "infinite"
              }
            },
            "methodIdentifiers": {
              "rrdata(uint16,bytes)": "087991bc",
              "setData(uint16,bytes,uint32,uint64,bytes)": "8581a99c"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"dnstype\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"name\",\"type\":\"bytes\"}],\"name\":\"rrdata\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"bytes20\",\"name\":\"\",\"type\":\"bytes20\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_expectedType\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"_expectedName\",\"type\":\"bytes\"},{\"internalType\":\"uint32\",\"name\":\"_inception\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"_inserted\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"_proof\",\"type\":\"bytes\"}],\"name\":\"setData\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/dnsregistrar/mocks/DummyDnsRegistrarDNSSEC.sol\":\"DummyDNSSEC\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/dnsregistrar/mocks/DummyDnsRegistrarDNSSEC.sol\":{\"content\":\"pragma solidity ^0.8.4;\\n\\ncontract DummyDNSSEC {\\n    uint16 expectedType;\\n    bytes expectedName;\\n    uint32 inception;\\n    uint64 inserted;\\n    bytes20 hash;\\n\\n    function setData(\\n        uint16 _expectedType,\\n        bytes memory _expectedName,\\n        uint32 _inception,\\n        uint64 _inserted,\\n        bytes memory _proof\\n    ) public {\\n        expectedType = _expectedType;\\n        expectedName = _expectedName;\\n        inception = _inception;\\n        inserted = _inserted;\\n        if (_proof.length != 0) {\\n            hash = bytes20(keccak256(_proof));\\n        }\\n    }\\n\\n    function rrdata(uint16 dnstype, bytes memory name)\\n        public\\n        view\\n        returns (\\n            uint32,\\n            uint64,\\n            bytes20\\n        )\\n    {\\n        require(dnstype == expectedType);\\n        require(keccak256(name) == keccak256(expectedName));\\n        return (inception, inserted, hash);\\n    }\\n}\\n\",\"keccak256\":\"0x6483f66c3a76ed2964e2c970654235ca2dd1a1ae4015fd283307ae7af5feb32a\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 3,
                "contract": "contracts/dnsregistrar/mocks/DummyDnsRegistrarDNSSEC.sol:DummyDNSSEC",
                "label": "expectedType",
                "offset": 0,
                "slot": "0",
                "type": "t_uint16"
              },
              {
                "astId": 5,
                "contract": "contracts/dnsregistrar/mocks/DummyDnsRegistrarDNSSEC.sol:DummyDNSSEC",
                "label": "expectedName",
                "offset": 0,
                "slot": "1",
                "type": "t_bytes_storage"
              },
              {
                "astId": 7,
                "contract": "contracts/dnsregistrar/mocks/DummyDnsRegistrarDNSSEC.sol:DummyDNSSEC",
                "label": "inception",
                "offset": 0,
                "slot": "2",
                "type": "t_uint32"
              },
              {
                "astId": 9,
                "contract": "contracts/dnsregistrar/mocks/DummyDnsRegistrarDNSSEC.sol:DummyDNSSEC",
                "label": "inserted",
                "offset": 4,
                "slot": "2",
                "type": "t_uint64"
              },
              {
                "astId": 11,
                "contract": "contracts/dnsregistrar/mocks/DummyDnsRegistrarDNSSEC.sol:DummyDNSSEC",
                "label": "hash",
                "offset": 12,
                "slot": "2",
                "type": "t_bytes20"
              }
            ],
            "types": {
              "t_bytes20": {
                "encoding": "inplace",
                "label": "bytes20",
                "numberOfBytes": "20"
              },
              "t_bytes_storage": {
                "encoding": "bytes",
                "label": "bytes",
                "numberOfBytes": "32"
              },
              "t_uint16": {
                "encoding": "inplace",
                "label": "uint16",
                "numberOfBytes": "2"
              },
              "t_uint32": {
                "encoding": "inplace",
                "label": "uint32",
                "numberOfBytes": "4"
              },
              "t_uint64": {
                "encoding": "inplace",
                "label": "uint64",
                "numberOfBytes": "8"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      }
    },
    "errors": [
      {
        "component": "general",
        "errorCode": "1878",
        "formattedMessage": "Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n--> contracts/dnsregistrar/mocks/DummyDnsRegistrarDNSSEC.sol\n\n",
        "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
        "severity": "warning",
        "sourceLocation": {
          "end": -1,
          "file": "contracts/dnsregistrar/mocks/DummyDnsRegistrarDNSSEC.sol",
          "start": -1
        },
        "type": "Warning"
      }
    ],
    "sources": {
      "contracts/dnsregistrar/mocks/DummyDnsRegistrarDNSSEC.sol": {
        "ast": {
          "absolutePath": "contracts/dnsregistrar/mocks/DummyDnsRegistrarDNSSEC.sol",
          "exportedSymbols": {
            "DummyDNSSEC": [
              92
            ]
          },
          "id": 93,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:23:0"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "DummyDNSSEC",
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 92,
              "linearizedBaseContracts": [
                92
              ],
              "name": "DummyDNSSEC",
              "nameLocation": "34:11:0",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 3,
                  "mutability": "mutable",
                  "name": "expectedType",
                  "nameLocation": "59:12:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 92,
                  "src": "52:19:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 2,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "52:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5,
                  "mutability": "mutable",
                  "name": "expectedName",
                  "nameLocation": "83:12:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 92,
                  "src": "77:18:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_storage",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 4,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "77:5:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7,
                  "mutability": "mutable",
                  "name": "inception",
                  "nameLocation": "108:9:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 92,
                  "src": "101:16:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 6,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "101:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9,
                  "mutability": "mutable",
                  "name": "inserted",
                  "nameLocation": "130:8:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 92,
                  "src": "123:15:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 8,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "123:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11,
                  "mutability": "mutable",
                  "name": "hash",
                  "nameLocation": "152:4:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 92,
                  "src": "144:12:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes20",
                    "typeString": "bytes20"
                  },
                  "typeName": {
                    "id": 10,
                    "name": "bytes20",
                    "nodeType": "ElementaryTypeName",
                    "src": "144:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes20",
                      "typeString": "bytes20"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 55,
                    "nodeType": "Block",
                    "src": "341:236:0",
                    "statements": [
                      {
                        "expression": {
                          "id": 26,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 24,
                            "name": "expectedType",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3,
                            "src": "351:12:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 25,
                            "name": "_expectedType",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13,
                            "src": "366:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "src": "351:28:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "id": 27,
                        "nodeType": "ExpressionStatement",
                        "src": "351:28:0"
                      },
                      {
                        "expression": {
                          "id": 30,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 28,
                            "name": "expectedName",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5,
                            "src": "389:12:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage",
                              "typeString": "bytes storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 29,
                            "name": "_expectedName",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15,
                            "src": "404:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "src": "389:28:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage",
                            "typeString": "bytes storage ref"
                          }
                        },
                        "id": 31,
                        "nodeType": "ExpressionStatement",
                        "src": "389:28:0"
                      },
                      {
                        "expression": {
                          "id": 34,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 32,
                            "name": "inception",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7,
                            "src": "427:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 33,
                            "name": "_inception",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17,
                            "src": "439:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "src": "427:22:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "id": 35,
                        "nodeType": "ExpressionStatement",
                        "src": "427:22:0"
                      },
                      {
                        "expression": {
                          "id": 38,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 36,
                            "name": "inserted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9,
                            "src": "459:8:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 37,
                            "name": "_inserted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19,
                            "src": "470:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "src": "459:20:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "id": 39,
                        "nodeType": "ExpressionStatement",
                        "src": "459:20:0"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 43,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 40,
                              "name": "_proof",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21,
                              "src": "493:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 41,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "500:6:0",
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "493:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 42,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "510:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "493:18:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 54,
                        "nodeType": "IfStatement",
                        "src": "489:82:0",
                        "trueBody": {
                          "id": 53,
                          "nodeType": "Block",
                          "src": "513:58:0",
                          "statements": [
                            {
                              "expression": {
                                "id": 51,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 44,
                                  "name": "hash",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11,
                                  "src": "527:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes20",
                                    "typeString": "bytes20"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "id": 48,
                                          "name": "_proof",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 21,
                                          "src": "552:6:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        ],
                                        "id": 47,
                                        "name": "keccak256",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -8,
                                        "src": "542:9:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                          "typeString": "function (bytes memory) pure returns (bytes32)"
                                        }
                                      },
                                      "id": 49,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "542:17:0",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    ],
                                    "id": 46,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "534:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes20_$",
                                      "typeString": "type(bytes20)"
                                    },
                                    "typeName": {
                                      "id": 45,
                                      "name": "bytes20",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "534:7:0",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 50,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "534:26:0",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes20",
                                    "typeString": "bytes20"
                                  }
                                },
                                "src": "527:33:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes20",
                                  "typeString": "bytes20"
                                }
                              },
                              "id": 52,
                              "nodeType": "ExpressionStatement",
                              "src": "527:33:0"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "functionSelector": "8581a99c",
                  "id": 56,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setData",
                  "nameLocation": "172:7:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 22,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13,
                        "mutability": "mutable",
                        "name": "_expectedType",
                        "nameLocation": "196:13:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 56,
                        "src": "189:20:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 12,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "189:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15,
                        "mutability": "mutable",
                        "name": "_expectedName",
                        "nameLocation": "232:13:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 56,
                        "src": "219:26:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 14,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "219:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17,
                        "mutability": "mutable",
                        "name": "_inception",
                        "nameLocation": "262:10:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 56,
                        "src": "255:17:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 16,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "255:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19,
                        "mutability": "mutable",
                        "name": "_inserted",
                        "nameLocation": "289:9:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 56,
                        "src": "282:16:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 18,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "282:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21,
                        "mutability": "mutable",
                        "name": "_proof",
                        "nameLocation": "321:6:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 56,
                        "src": "308:19:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 20,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "308:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "179:154:0"
                  },
                  "returnParameters": {
                    "id": 23,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "341:0:0"
                  },
                  "scope": 92,
                  "src": "163:414:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 90,
                    "nodeType": "Block",
                    "src": "754:154:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              },
                              "id": 72,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 70,
                                "name": "dnstype",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 58,
                                "src": "772:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "id": 71,
                                "name": "expectedType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3,
                                "src": "783:12:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              },
                              "src": "772:23:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 69,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "764:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 73,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "764:32:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 74,
                        "nodeType": "ExpressionStatement",
                        "src": "764:32:0"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              "id": 82,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "id": 77,
                                    "name": "name",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 60,
                                    "src": "824:4:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 76,
                                  "name": "keccak256",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -8,
                                  "src": "814:9:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                    "typeString": "function (bytes memory) pure returns (bytes32)"
                                  }
                                },
                                "id": 78,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "814:15:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "id": 80,
                                    "name": "expectedName",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5,
                                    "src": "843:12:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_storage",
                                      "typeString": "bytes storage ref"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_storage",
                                      "typeString": "bytes storage ref"
                                    }
                                  ],
                                  "id": 79,
                                  "name": "keccak256",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -8,
                                  "src": "833:9:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                    "typeString": "function (bytes memory) pure returns (bytes32)"
                                  }
                                },
                                "id": 81,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "833:23:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "src": "814:42:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 75,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "806:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 83,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "806:51:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 84,
                        "nodeType": "ExpressionStatement",
                        "src": "806:51:0"
                      },
                      {
                        "expression": {
                          "components": [
                            {
                              "id": 85,
                              "name": "inception",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7,
                              "src": "875:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 86,
                              "name": "inserted",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9,
                              "src": "886:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            {
                              "id": 87,
                              "name": "hash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11,
                              "src": "896:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes20",
                                "typeString": "bytes20"
                              }
                            }
                          ],
                          "id": 88,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "874:27:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint32_$_t_uint64_$_t_bytes20_$",
                            "typeString": "tuple(uint32,uint64,bytes20)"
                          }
                        },
                        "functionReturnParameters": 68,
                        "id": 89,
                        "nodeType": "Return",
                        "src": "867:34:0"
                      }
                    ]
                  },
                  "functionSelector": "087991bc",
                  "id": 91,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "rrdata",
                  "nameLocation": "592:6:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 61,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 58,
                        "mutability": "mutable",
                        "name": "dnstype",
                        "nameLocation": "606:7:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 91,
                        "src": "599:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 57,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "599:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 60,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "628:4:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 91,
                        "src": "615:17:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 59,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "615:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "598:35:0"
                  },
                  "returnParameters": {
                    "id": 68,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 63,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 91,
                        "src": "692:6:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 62,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "692:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 65,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 91,
                        "src": "712:6:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 64,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "712:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 67,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 91,
                        "src": "732:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes20",
                          "typeString": "bytes20"
                        },
                        "typeName": {
                          "id": 66,
                          "name": "bytes20",
                          "nodeType": "ElementaryTypeName",
                          "src": "732:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes20",
                            "typeString": "bytes20"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "678:71:0"
                  },
                  "scope": 92,
                  "src": "583:325:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 93,
              "src": "25:885:0",
              "usedErrors": []
            }
          ],
          "src": "0:911:0"
        },
        "id": 0
      }
    }
  }
}
