{
  "id": "512b3ce12fbf11bd468d907e543f7a84",
  "_format": "hh-sol-build-info-1",
  "solcVersion": "0.8.17",
  "solcLongVersion": "0.8.17+commit.8df45f5f",
  "input": {
    "language": "Solidity",
    "sources": {
      "test/registry/mocks/DummyResolver.sol": {
        "content": "pragma solidity >=0.8.4;\n\ncontract DummyResolver {\n\n    mapping (bytes32 => string) public name;\n\n    function setName(bytes32 node, string memory _name) public {\n        name[node] = _name;\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": {
      "test/registry/mocks/DummyResolver.sol": {
        "DummyResolver": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "string",
                  "name": "_name",
                  "type": "string"
                }
              ],
              "name": "setName",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506104ae806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063691f34311461003b5780637737221314610064575b600080fd5b61004e610049366004610130565b610079565b60405161005b9190610149565b60405180910390f35b6100776100723660046101e4565b610113565b005b60006020819052908152604090208054610092906102bd565b80601f01602080910402602001604051908101604052809291908181526020018280546100be906102bd565b801561010b5780601f106100e05761010080835404028352916020019161010b565b820191906000526020600020905b8154815290600101906020018083116100ee57829003601f168201915b505050505081565b600082815260208190526040902061012b828261035e565b505050565b60006020828403121561014257600080fd5b5035919050565b600060208083528351808285015260005b818110156101765785810183015185820160400152820161015a565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156101f757600080fd5b82359150602083013567ffffffffffffffff8082111561021657600080fd5b818501915085601f83011261022a57600080fd5b81358181111561023c5761023c6101b5565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715610282576102826101b5565b8160405282815288602084870101111561029b57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b600181811c908216806102d157607f821691505b60208210810361030a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f82111561012b57600081815260208120601f850160051c810160208610156103375750805b601f850160051c820191505b8181101561035657828155600101610343565b505050505050565b815167ffffffffffffffff811115610378576103786101b5565b61038c8161038684546102bd565b84610310565b602080601f8311600181146103df57600084156103a95750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555610356565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b8281101561042c5788860151825594840194600190910190840161040d565b508582101561046857878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b0190555056fea26469706673582212201558a234c57fb3b30890fe71aa4dcb47a613d6b57f6429d816e30d1fb303218564736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4AE 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 0x691F3431 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0x77372213 EQ PUSH2 0x64 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4E PUSH2 0x49 CALLDATASIZE PUSH1 0x4 PUSH2 0x130 JUMP JUMPDEST PUSH2 0x79 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5B SWAP2 SWAP1 PUSH2 0x149 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x77 PUSH2 0x72 CALLDATASIZE PUSH1 0x4 PUSH2 0x1E4 JUMP JUMPDEST PUSH2 0x113 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP2 SWAP1 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH2 0x92 SWAP1 PUSH2 0x2BD JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xBE SWAP1 PUSH2 0x2BD JUMP JUMPDEST DUP1 ISZERO PUSH2 0x10B JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xE0 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x10B JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xEE JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x12B DUP3 DUP3 PUSH2 0x35E JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x142 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x176 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x15A JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x40 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x40 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x22A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x23C JUMPI PUSH2 0x23C PUSH2 0x1B5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x282 JUMPI PUSH2 0x282 PUSH2 0x1B5 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x29B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x2D1 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x30A JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x12B 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 0x337 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x356 JUMPI DUP3 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x343 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x378 JUMPI PUSH2 0x378 PUSH2 0x1B5 JUMP JUMPDEST PUSH2 0x38C DUP2 PUSH2 0x386 DUP5 SLOAD PUSH2 0x2BD JUMP JUMPDEST DUP5 PUSH2 0x310 JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH2 0x3DF JUMPI PUSH1 0x0 DUP5 ISZERO PUSH2 0x3A9 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 0x356 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x42C JUMPI DUP9 DUP7 ADD MLOAD DUP3 SSTORE SWAP5 DUP5 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 DUP5 ADD PUSH2 0x40D JUMP JUMPDEST POP DUP6 DUP3 LT ISZERO PUSH2 0x468 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 ISZERO PC LOG2 CALLVALUE 0xC5 PUSH32 0xB3B30890FE71AA4DCB47A613D6B57F6429D816E30D1FB303218564736F6C6343 STOP ADDMOD GT STOP CALLER ",
              "sourceMap": "26:172:0:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@name_5": {
                  "entryPoint": 121,
                  "id": 5,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@setName_19": {
                  "entryPoint": 275,
                  "id": 19,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "abi_decode_tuple_t_bytes32": {
                  "entryPoint": 304,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes32t_string_memory_ptr": {
                  "entryPoint": 484,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 329,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "array_dataslot_string_storage": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "clean_up_bytearray_end_slots_string_storage": {
                  "entryPoint": 784,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage": {
                  "entryPoint": 862,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "extract_byte_array_length": {
                  "entryPoint": 701,
                  "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": 437,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:4876:1",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:1",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "84:110:1",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "130:16:1",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "139:1:1",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "142:1:1",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "132:6:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "132:12:1"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "132:12:1"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "105:7:1"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "114:9:1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "101:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "101:23:1"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "126:2:1",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "97:3:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "97:32:1"
                              },
                              "nodeType": "YulIf",
                              "src": "94:52:1"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "155:33:1",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "178:9:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "165:12:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "165:23:1"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "155:6:1"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "50:9:1",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "61:7:1",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "73:6:1",
                            "type": ""
                          }
                        ],
                        "src": "14:180:1"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "320:486:1",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "330:12:1",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "340:2:1",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "334:2:1",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "358:9:1"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "369:2:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "351:6:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "351:21:1"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "351:21:1"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "381:27:1",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "401:6:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "395:5:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "395:13:1"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "385:6:1",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "428:9:1"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "439:2:1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "424:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "424:18:1"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "444:6:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "417:6:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "417:34:1"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "417:34:1"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "460:10:1",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "469:1:1",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "464:1:1",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "529:90:1",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "headStart",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "558:9:1"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "569:1:1"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "554:3:1"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "554:17:1"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "573:2:1",
                                              "type": "",
                                              "value": "64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "550:3:1"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "550:26:1"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "value0",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "592:6:1"
                                                    },
                                                    {
                                                      "name": "i",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "600:1:1"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "588:3:1"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "588:14:1"
                                                },
                                                {
                                                  "name": "_1",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "604:2:1"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "584:3:1"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "584:23:1"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "578:5:1"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "578:30:1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "543:6:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "543:66:1"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "543:66:1"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "490:1:1"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "493:6:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "487:2:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "487:13:1"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "501:19:1",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "503:15:1",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "512:1:1"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "515:2:1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "508:3:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "508:10:1"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "503:1:1"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "483:3:1",
                                "statements": []
                              },
                              "src": "479:140:1"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "643:9:1"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "654:6:1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "639:3:1"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "639:22:1"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "663:2:1",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "635:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "635:31:1"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "668:1:1",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "628:6:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "628:42:1"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "628:42:1"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "679:121:1",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "695:9:1"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "714:6:1"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "722:2:1",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "710:3:1"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "710:15:1"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "727:66:1",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "706:3:1"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "706:88:1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "691:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "691:104:1"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "797:2:1",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "687:3:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "687:113:1"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "679:4:1"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "289:9:1",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "300:6:1",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "311:4:1",
                            "type": ""
                          }
                        ],
                        "src": "199:607:1"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "843:152:1",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "860:1:1",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "863:77:1",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "853:6:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "853:88:1"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "853:88:1"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "957:1:1",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "960:4:1",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "950:6:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "950:15:1"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "950:15:1"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "981:1:1",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "984:4:1",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "974:6:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "974:15:1"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "974:15:1"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "811:184:1"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1097:952:1",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1143:16:1",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1152:1:1",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1155:1:1",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1145:6:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1145:12:1"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1145:12:1"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1118:7:1"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1127:9:1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1114:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1114:23:1"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1139:2:1",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1110:3:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1110:32:1"
                              },
                              "nodeType": "YulIf",
                              "src": "1107:52:1"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1168:33:1",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1191:9:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1178:12:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1178:23:1"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1168:6:1"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1210:46:1",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1241:9:1"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1252:2:1",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1237:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1237:18:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1224:12:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1224:32:1"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "1214:6:1",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1265:28:1",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1275:18:1",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1269:2:1",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1320:16:1",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1329:1:1",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1332:1:1",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1322:6:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1322:12:1"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1322:12:1"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1308:6:1"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1316:2:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1305:2:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1305:14:1"
                              },
                              "nodeType": "YulIf",
                              "src": "1302:34:1"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1345:32:1",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1359:9:1"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1370:6:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1355:3:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1355:22:1"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "1349:2:1",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1425:16:1",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1434:1:1",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1437:1:1",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1427:6:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1427:12:1"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1427:12:1"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "1404:2:1"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1408:4:1",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1400:3:1"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1400:13:1"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1415:7:1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1396:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1396:27:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1389:6:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1389:35:1"
                              },
                              "nodeType": "YulIf",
                              "src": "1386:55:1"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1450:26:1",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "1473:2:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1460:12:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1460:16:1"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "1454:2:1",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1499:22:1",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "1501:16:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1501:18:1"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1501:18:1"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "1491:2:1"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1495:2:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1488:2:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1488:10:1"
                              },
                              "nodeType": "YulIf",
                              "src": "1485:36:1"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1530:76:1",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1540:66:1",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "1534:2:1",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1615:23:1",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1635:2:1",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1629:5:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1629:9:1"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "1619:6:1",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1647:71:1",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1669:6:1"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "_3",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1693:2:1"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "1697:4:1",
                                                    "type": "",
                                                    "value": "0x1f"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1689:3:1"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1689:13:1"
                                              },
                                              {
                                                "name": "_4",
                                                "nodeType": "YulIdentifier",
                                                "src": "1704:2:1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "1685:3:1"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1685:22:1"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1709:2:1",
                                            "type": "",
                                            "value": "63"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1681:3:1"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1681:31:1"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "1714:2:1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1677:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1677:40:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1665:3:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1665:53:1"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "1651:10:1",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1777:22:1",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "1779:16:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1779:18:1"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1779:18:1"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1736:10:1"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "1748:2:1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1733:2:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1733:18:1"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1756:10:1"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1768:6:1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1753:2:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1753:22:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "1730:2:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1730:46:1"
                              },
                              "nodeType": "YulIf",
                              "src": "1727:72:1"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1815:2:1",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1819:10:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1808:6:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1808:22:1"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1808:22:1"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1846:6:1"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "1854:2:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1839:6:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1839:18:1"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1839:18:1"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1903:16:1",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1912:1:1",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1915:1:1",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1905:6:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1905:12:1"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1905:12:1"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "1880:2:1"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "1884:2:1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1876:3:1"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1876:11:1"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1889:2:1",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1872:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1872:20:1"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1894:7:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1869:2:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1869:33:1"
                              },
                              "nodeType": "YulIf",
                              "src": "1866:53:1"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1945:6:1"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1953:2:1",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1941:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1941:15:1"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "1962:2:1"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1966:2:1",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1958:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1958:11:1"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "1971:2:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "1928:12:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1928:46:1"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1928:46:1"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "memPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "1998:6:1"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "2006:2:1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1994:3:1"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1994:15:1"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2011:2:1",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1990:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1990:24:1"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2016:1:1",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1983:6:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1983:35:1"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1983:35:1"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2027:16:1",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "2037:6:1"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2027:6:1"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_string_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1055:9:1",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1066:7:1",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1078:6:1",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1086:6:1",
                            "type": ""
                          }
                        ],
                        "src": "1000:1049:1"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2109:382:1",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2119:22:1",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2133:1:1",
                                    "type": "",
                                    "value": "1"
                                  },
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "2136:4:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "2129:3:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2129:12:1"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "2119:6:1"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2150:38:1",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "2180:4:1"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2186:1:1",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "2176:3:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2176:12:1"
                              },
                              "variables": [
                                {
                                  "name": "outOfPlaceEncoding",
                                  "nodeType": "YulTypedName",
                                  "src": "2154:18:1",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2227:31:1",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2229:27:1",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "length",
                                          "nodeType": "YulIdentifier",
                                          "src": "2243:6:1"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2251:4:1",
                                          "type": "",
                                          "value": "0x7f"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nodeType": "YulIdentifier",
                                        "src": "2239:3:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2239:17:1"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "2229:6:1"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "2207:18:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "2200:6:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2200:26:1"
                              },
                              "nodeType": "YulIf",
                              "src": "2197:61:1"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2317:168:1",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2338:1:1",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2341:77:1",
                                          "type": "",
                                          "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "2331:6:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2331:88:1"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2331:88:1"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2439:1:1",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2442:4:1",
                                          "type": "",
                                          "value": "0x22"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "2432:6:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2432:15:1"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2432:15:1"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2467:1:1",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2470:4:1",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2460:6:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2460:15:1"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2460:15:1"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "2273:18:1"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "2296:6:1"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2304:2:1",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2293:2:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2293:14:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "2270:2:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2270:38:1"
                              },
                              "nodeType": "YulIf",
                              "src": "2267:218:1"
                            }
                          ]
                        },
                        "name": "extract_byte_array_length",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "2089:4:1",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "2098:6:1",
                            "type": ""
                          }
                        ],
                        "src": "2054:437:1"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2552:65:1",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2569:1:1",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "name": "ptr",
                                    "nodeType": "YulIdentifier",
                                    "src": "2572:3:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2562:6:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2562:14:1"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2562:14:1"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2585:26:1",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2603:1:1",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2606:4:1",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "keccak256",
                                  "nodeType": "YulIdentifier",
                                  "src": "2593:9:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2593:18:1"
                              },
                              "variableNames": [
                                {
                                  "name": "data",
                                  "nodeType": "YulIdentifier",
                                  "src": "2585:4:1"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "array_dataslot_string_storage",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "ptr",
                            "nodeType": "YulTypedName",
                            "src": "2535:3:1",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "2543:4:1",
                            "type": ""
                          }
                        ],
                        "src": "2496:121:1"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2703:464:1",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2736:425:1",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "2750:11:1",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "2760:1:1",
                                      "type": "",
                                      "value": "0"
                                    },
                                    "variables": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulTypedName",
                                        "src": "2754:2:1",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "2781:2:1"
                                        },
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "2785:5:1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "2774:6:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2774:17:1"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2774:17:1"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "2804:31:1",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "2826:2:1"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2830:4:1",
                                          "type": "",
                                          "value": "0x20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "keccak256",
                                        "nodeType": "YulIdentifier",
                                        "src": "2816:9:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2816:19:1"
                                    },
                                    "variables": [
                                      {
                                        "name": "data",
                                        "nodeType": "YulTypedName",
                                        "src": "2808:4:1",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "2848:57:1",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "data",
                                          "nodeType": "YulIdentifier",
                                          "src": "2871:4:1"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "2881:1:1",
                                              "type": "",
                                              "value": "5"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "startIndex",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2888:10:1"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "2900:2:1",
                                                  "type": "",
                                                  "value": "31"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "2884:3:1"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "2884:19:1"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shr",
                                            "nodeType": "YulIdentifier",
                                            "src": "2877:3:1"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2877:27:1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "2867:3:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2867:38:1"
                                    },
                                    "variables": [
                                      {
                                        "name": "deleteStart",
                                        "nodeType": "YulTypedName",
                                        "src": "2852:11:1",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "2942:23:1",
                                      "statements": [
                                        {
                                          "nodeType": "YulAssignment",
                                          "src": "2944:19:1",
                                          "value": {
                                            "name": "data",
                                            "nodeType": "YulIdentifier",
                                            "src": "2959:4:1"
                                          },
                                          "variableNames": [
                                            {
                                              "name": "deleteStart",
                                              "nodeType": "YulIdentifier",
                                              "src": "2944:11:1"
                                            }
                                          ]
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "startIndex",
                                          "nodeType": "YulIdentifier",
                                          "src": "2924:10:1"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2936:4:1",
                                          "type": "",
                                          "value": "0x20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "lt",
                                        "nodeType": "YulIdentifier",
                                        "src": "2921:2:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2921:20:1"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "2918:47:1"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "2978:41:1",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "data",
                                          "nodeType": "YulIdentifier",
                                          "src": "2992:4:1"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "3002:1:1",
                                              "type": "",
                                              "value": "5"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "len",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3009:3:1"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "3014:2:1",
                                                  "type": "",
                                                  "value": "31"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "3005:3:1"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "3005:12:1"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shr",
                                            "nodeType": "YulIdentifier",
                                            "src": "2998:3:1"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2998:20:1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "2988:3:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2988:31:1"
                                    },
                                    "variables": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulTypedName",
                                        "src": "2982:2:1",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "3032:24:1",
                                    "value": {
                                      "name": "deleteStart",
                                      "nodeType": "YulIdentifier",
                                      "src": "3045:11:1"
                                    },
                                    "variables": [
                                      {
                                        "name": "start",
                                        "nodeType": "YulTypedName",
                                        "src": "3036:5:1",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "3130:21:1",
                                      "statements": [
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "start",
                                                "nodeType": "YulIdentifier",
                                                "src": "3139:5:1"
                                              },
                                              {
                                                "name": "_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "3146:2:1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sstore",
                                              "nodeType": "YulIdentifier",
                                              "src": "3132:6:1"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3132:17:1"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "3132:17:1"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "start",
                                          "nodeType": "YulIdentifier",
                                          "src": "3080:5:1"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "3087:2:1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "lt",
                                        "nodeType": "YulIdentifier",
                                        "src": "3077:2:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3077:13:1"
                                    },
                                    "nodeType": "YulForLoop",
                                    "post": {
                                      "nodeType": "YulBlock",
                                      "src": "3091:26:1",
                                      "statements": [
                                        {
                                          "nodeType": "YulAssignment",
                                          "src": "3093:22:1",
                                          "value": {
                                            "arguments": [
                                              {
                                                "name": "start",
                                                "nodeType": "YulIdentifier",
                                                "src": "3106:5:1"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3113:1:1",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "3102:3:1"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3102:13:1"
                                          },
                                          "variableNames": [
                                            {
                                              "name": "start",
                                              "nodeType": "YulIdentifier",
                                              "src": "3093:5:1"
                                            }
                                          ]
                                        }
                                      ]
                                    },
                                    "pre": {
                                      "nodeType": "YulBlock",
                                      "src": "3073:3:1",
                                      "statements": []
                                    },
                                    "src": "3069:82:1"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "len",
                                    "nodeType": "YulIdentifier",
                                    "src": "2719:3:1"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2724:2:1",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2716:2:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2716:11:1"
                              },
                              "nodeType": "YulIf",
                              "src": "2713:448:1"
                            }
                          ]
                        },
                        "name": "clean_up_bytearray_end_slots_string_storage",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "2675:5:1",
                            "type": ""
                          },
                          {
                            "name": "len",
                            "nodeType": "YulTypedName",
                            "src": "2682:3:1",
                            "type": ""
                          },
                          {
                            "name": "startIndex",
                            "nodeType": "YulTypedName",
                            "src": "2687:10:1",
                            "type": ""
                          }
                        ],
                        "src": "2622:545:1"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3257:141:1",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "3267:125:1",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "data",
                                        "nodeType": "YulIdentifier",
                                        "src": "3282:4:1"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "3300:1:1",
                                                    "type": "",
                                                    "value": "3"
                                                  },
                                                  {
                                                    "name": "len",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3303:3:1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3296:3:1"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3296:11:1"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3309:66:1",
                                                "type": "",
                                                "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shr",
                                              "nodeType": "YulIdentifier",
                                              "src": "3292:3:1"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3292:84:1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "not",
                                          "nodeType": "YulIdentifier",
                                          "src": "3288:3:1"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3288:89:1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "3278:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3278:100:1"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3384:1:1",
                                        "type": "",
                                        "value": "1"
                                      },
                                      {
                                        "name": "len",
                                        "nodeType": "YulIdentifier",
                                        "src": "3387:3:1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "3380:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3380:11:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "3275:2:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3275:117:1"
                              },
                              "variableNames": [
                                {
                                  "name": "used",
                                  "nodeType": "YulIdentifier",
                                  "src": "3267:4:1"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "extract_used_part_and_set_length_of_short_byte_array",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "3234:4:1",
                            "type": ""
                          },
                          {
                            "name": "len",
                            "nodeType": "YulTypedName",
                            "src": "3240:3:1",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "used",
                            "nodeType": "YulTypedName",
                            "src": "3248:4:1",
                            "type": ""
                          }
                        ],
                        "src": "3172:226:1"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3499:1375:1",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3509:24:1",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "src",
                                    "nodeType": "YulIdentifier",
                                    "src": "3529:3:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3523:5:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3523:10:1"
                              },
                              "variables": [
                                {
                                  "name": "newLen",
                                  "nodeType": "YulTypedName",
                                  "src": "3513:6:1",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3576:22:1",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "3578:16:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3578:18:1"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3578:18:1"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "newLen",
                                    "nodeType": "YulIdentifier",
                                    "src": "3548:6:1"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3556:18:1",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3545:2:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3545:30:1"
                              },
                              "nodeType": "YulIf",
                              "src": "3542:56:1"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "slot",
                                    "nodeType": "YulIdentifier",
                                    "src": "3651:4:1"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "slot",
                                            "nodeType": "YulIdentifier",
                                            "src": "3689:4:1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sload",
                                          "nodeType": "YulIdentifier",
                                          "src": "3683:5:1"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3683:11:1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "extract_byte_array_length",
                                      "nodeType": "YulIdentifier",
                                      "src": "3657:25:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3657:38:1"
                                  },
                                  {
                                    "name": "newLen",
                                    "nodeType": "YulIdentifier",
                                    "src": "3697:6:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "clean_up_bytearray_end_slots_string_storage",
                                  "nodeType": "YulIdentifier",
                                  "src": "3607:43:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3607:97:1"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3607:97:1"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3713:18:1",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "3730:1:1",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "srcOffset",
                                  "nodeType": "YulTypedName",
                                  "src": "3717:9:1",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3740:23:1",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "3759:4:1",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "srcOffset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3744:11:1",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3772:24:1",
                              "value": {
                                "name": "srcOffset_1",
                                "nodeType": "YulIdentifier",
                                "src": "3785:11:1"
                              },
                              "variableNames": [
                                {
                                  "name": "srcOffset",
                                  "nodeType": "YulIdentifier",
                                  "src": "3772:9:1"
                                }
                              ]
                            },
                            {
                              "cases": [
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "3842:775:1",
                                    "statements": [
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "3856:94:1",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "newLen",
                                              "nodeType": "YulIdentifier",
                                              "src": "3875:6:1"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "3883:66:1",
                                              "type": "",
                                              "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "3871:3:1"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "3871:79:1"
                                        },
                                        "variables": [
                                          {
                                            "name": "loopEnd",
                                            "nodeType": "YulTypedName",
                                            "src": "3860:7:1",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "3963:49:1",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "slot",
                                              "nodeType": "YulIdentifier",
                                              "src": "4007:4:1"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "array_dataslot_string_storage",
                                            "nodeType": "YulIdentifier",
                                            "src": "3977:29:1"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "3977:35:1"
                                        },
                                        "variables": [
                                          {
                                            "name": "dstPtr",
                                            "nodeType": "YulTypedName",
                                            "src": "3967:6:1",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "4025:10:1",
                                        "value": {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4034:1:1",
                                          "type": "",
                                          "value": "0"
                                        },
                                        "variables": [
                                          {
                                            "name": "i",
                                            "nodeType": "YulTypedName",
                                            "src": "4029:1:1",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "4112:172:1",
                                          "statements": [
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "name": "dstPtr",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4137:6:1"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "name": "src",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "4155:3:1"
                                                          },
                                                          {
                                                            "name": "srcOffset",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "4160:9:1"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "add",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "4151:3:1"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "4151:19:1"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "mload",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "4145:5:1"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "4145:26:1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "sstore",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4130:6:1"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "4130:42:1"
                                              },
                                              "nodeType": "YulExpressionStatement",
                                              "src": "4130:42:1"
                                            },
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "4189:24:1",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "dstPtr",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4203:6:1"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "4211:1:1",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4199:3:1"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "4199:14:1"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "dstPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4189:6:1"
                                                }
                                              ]
                                            },
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "4230:40:1",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "srcOffset",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4247:9:1"
                                                  },
                                                  {
                                                    "name": "srcOffset_1",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4258:11:1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4243:3:1"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "4243:27:1"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "srcOffset",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4230:9:1"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "condition": {
                                          "arguments": [
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "4059:1:1"
                                            },
                                            {
                                              "name": "loopEnd",
                                              "nodeType": "YulIdentifier",
                                              "src": "4062:7:1"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "lt",
                                            "nodeType": "YulIdentifier",
                                            "src": "4056:2:1"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4056:14:1"
                                        },
                                        "nodeType": "YulForLoop",
                                        "post": {
                                          "nodeType": "YulBlock",
                                          "src": "4071:28:1",
                                          "statements": [
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "4073:24:1",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "i",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4082:1:1"
                                                  },
                                                  {
                                                    "name": "srcOffset_1",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4085:11:1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4078:3:1"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "4078:19:1"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4073:1:1"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "pre": {
                                          "nodeType": "YulBlock",
                                          "src": "4052:3:1",
                                          "statements": []
                                        },
                                        "src": "4048:236:1"
                                      },
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "4332:226:1",
                                          "statements": [
                                            {
                                              "nodeType": "YulVariableDeclaration",
                                              "src": "4350:43:1",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "src",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4377:3:1"
                                                      },
                                                      {
                                                        "name": "srcOffset",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4382:9:1"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "add",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "4373:3:1"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "4373:19:1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "mload",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4367:5:1"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "4367:26:1"
                                              },
                                              "variables": [
                                                {
                                                  "name": "lastValue",
                                                  "nodeType": "YulTypedName",
                                                  "src": "4354:9:1",
                                                  "type": ""
                                                }
                                              ]
                                            },
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "name": "dstPtr",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4417:6:1"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "lastValue",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4429:9:1"
                                                      },
                                                      {
                                                        "arguments": [
                                                          {
                                                            "arguments": [
                                                              {
                                                                "arguments": [
                                                                  {
                                                                    "arguments": [
                                                                      {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4456:1:1",
                                                                        "type": "",
                                                                        "value": "3"
                                                                      },
                                                                      {
                                                                        "name": "newLen",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4459:6:1"
                                                                      }
                                                                    ],
                                                                    "functionName": {
                                                                      "name": "shl",
                                                                      "nodeType": "YulIdentifier",
                                                                      "src": "4452:3:1"
                                                                    },
                                                                    "nodeType": "YulFunctionCall",
                                                                    "src": "4452:14:1"
                                                                  },
                                                                  {
                                                                    "kind": "number",
                                                                    "nodeType": "YulLiteral",
                                                                    "src": "4468:3:1",
                                                                    "type": "",
                                                                    "value": "248"
                                                                  }
                                                                ],
                                                                "functionName": {
                                                                  "name": "and",
                                                                  "nodeType": "YulIdentifier",
                                                                  "src": "4448:3:1"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4448:24:1"
                                                              },
                                                              {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "4474:66:1",
                                                                "type": "",
                                                                "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                                              }
                                                            ],
                                                            "functionName": {
                                                              "name": "shr",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "4444:3:1"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "4444:97:1"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "not",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "4440:3:1"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "4440:102:1"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "and",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "4425:3:1"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "4425:118:1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "sstore",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4410:6:1"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "4410:134:1"
                                              },
                                              "nodeType": "YulExpressionStatement",
                                              "src": "4410:134:1"
                                            }
                                          ]
                                        },
                                        "condition": {
                                          "arguments": [
                                            {
                                              "name": "loopEnd",
                                              "nodeType": "YulIdentifier",
                                              "src": "4303:7:1"
                                            },
                                            {
                                              "name": "newLen",
                                              "nodeType": "YulIdentifier",
                                              "src": "4312:6:1"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "lt",
                                            "nodeType": "YulIdentifier",
                                            "src": "4300:2:1"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4300:19:1"
                                        },
                                        "nodeType": "YulIf",
                                        "src": "4297:261:1"
                                      },
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "name": "slot",
                                              "nodeType": "YulIdentifier",
                                              "src": "4578:4:1"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "4592:1:1",
                                                      "type": "",
                                                      "value": "1"
                                                    },
                                                    {
                                                      "name": "newLen",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "4595:6:1"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "shl",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4588:3:1"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "4588:14:1"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "4604:1:1",
                                                  "type": "",
                                                  "value": "1"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "4584:3:1"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "4584:22:1"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "4571:6:1"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4571:36:1"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "4571:36:1"
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "3835:782:1",
                                  "value": {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3840:1:1",
                                    "type": "",
                                    "value": "1"
                                  }
                                },
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "4634:234:1",
                                    "statements": [
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "4648:14:1",
                                        "value": {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4661:1:1",
                                          "type": "",
                                          "value": "0"
                                        },
                                        "variables": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulTypedName",
                                            "src": "4652:5:1",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "4697:67:1",
                                          "statements": [
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "4715:35:1",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "src",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4734:3:1"
                                                      },
                                                      {
                                                        "name": "srcOffset",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4739:9:1"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "add",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "4730:3:1"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "4730:19:1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "mload",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4724:5:1"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "4724:26:1"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "value",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4715:5:1"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "condition": {
                                          "name": "newLen",
                                          "nodeType": "YulIdentifier",
                                          "src": "4678:6:1"
                                        },
                                        "nodeType": "YulIf",
                                        "src": "4675:89:1"
                                      },
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "name": "slot",
                                              "nodeType": "YulIdentifier",
                                              "src": "4784:4:1"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "value",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4843:5:1"
                                                },
                                                {
                                                  "name": "newLen",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4850:6:1"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "extract_used_part_and_set_length_of_short_byte_array",
                                                "nodeType": "YulIdentifier",
                                                "src": "4790:52:1"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "4790:67:1"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "4777:6:1"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4777:81:1"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "4777:81:1"
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "4626:242:1",
                                  "value": "default"
                                }
                              ],
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "newLen",
                                    "nodeType": "YulIdentifier",
                                    "src": "3815:6:1"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3823:2:1",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3812:2:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3812:14:1"
                              },
                              "nodeType": "YulSwitch",
                              "src": "3805:1063:1"
                            }
                          ]
                        },
                        "name": "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "slot",
                            "nodeType": "YulTypedName",
                            "src": "3484:4:1",
                            "type": ""
                          },
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "3490:3:1",
                            "type": ""
                          }
                        ],
                        "src": "3403:1471:1"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        mstore(headStart, _1)\n        let length := mload(value0)\n        mstore(add(headStart, _1), length)\n        let i := 0\n        for { } lt(i, length) { i := add(i, _1) }\n        {\n            mstore(add(add(headStart, i), 64), mload(add(add(value0, i), _1)))\n        }\n        mstore(add(add(headStart, length), 64), 0)\n        tail := add(add(headStart, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 64)\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_tuple_t_bytes32t_string_memory_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let offset := calldataload(add(headStart, 32))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := calldataload(_2)\n        if gt(_3, _1) { panic_error_0x41() }\n        let _4 := 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _3)\n        if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n        calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n        mstore(add(add(memPtr, _3), 32), 0)\n        value1 := memPtr\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function array_dataslot_string_storage(ptr) -> data\n    {\n        mstore(0, ptr)\n        data := keccak256(0, 0x20)\n    }\n    function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n    {\n        if gt(len, 31)\n        {\n            let _1 := 0\n            mstore(_1, array)\n            let data := keccak256(_1, 0x20)\n            let deleteStart := add(data, shr(5, add(startIndex, 31)))\n            if lt(startIndex, 0x20) { deleteStart := data }\n            let _2 := add(data, shr(5, add(len, 31)))\n            let start := deleteStart\n            for { } lt(start, _2) { start := add(start, 1) }\n            { sstore(start, _1) }\n        }\n    }\n    function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n    {\n        used := or(and(data, not(shr(shl(3, len), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff))), shl(1, len))\n    }\n    function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n    {\n        let newLen := mload(src)\n        if gt(newLen, 0xffffffffffffffff) { panic_error_0x41() }\n        clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n        let srcOffset := 0\n        let srcOffset_1 := 0x20\n        srcOffset := srcOffset_1\n        switch gt(newLen, 31)\n        case 1 {\n            let loopEnd := and(newLen, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)\n            let dstPtr := array_dataslot_string_storage(slot)\n            let i := 0\n            for { } lt(i, loopEnd) { i := add(i, srcOffset_1) }\n            {\n                sstore(dstPtr, mload(add(src, srcOffset)))\n                dstPtr := add(dstPtr, 1)\n                srcOffset := add(srcOffset, srcOffset_1)\n            }\n            if lt(loopEnd, newLen)\n            {\n                let lastValue := mload(add(src, srcOffset))\n                sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), 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": "608060405234801561001057600080fd5b50600436106100365760003560e01c8063691f34311461003b5780637737221314610064575b600080fd5b61004e610049366004610130565b610079565b60405161005b9190610149565b60405180910390f35b6100776100723660046101e4565b610113565b005b60006020819052908152604090208054610092906102bd565b80601f01602080910402602001604051908101604052809291908181526020018280546100be906102bd565b801561010b5780601f106100e05761010080835404028352916020019161010b565b820191906000526020600020905b8154815290600101906020018083116100ee57829003601f168201915b505050505081565b600082815260208190526040902061012b828261035e565b505050565b60006020828403121561014257600080fd5b5035919050565b600060208083528351808285015260005b818110156101765785810183015185820160400152820161015a565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156101f757600080fd5b82359150602083013567ffffffffffffffff8082111561021657600080fd5b818501915085601f83011261022a57600080fd5b81358181111561023c5761023c6101b5565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715610282576102826101b5565b8160405282815288602084870101111561029b57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b600181811c908216806102d157607f821691505b60208210810361030a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f82111561012b57600081815260208120601f850160051c810160208610156103375750805b601f850160051c820191505b8181101561035657828155600101610343565b505050505050565b815167ffffffffffffffff811115610378576103786101b5565b61038c8161038684546102bd565b84610310565b602080601f8311600181146103df57600084156103a95750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555610356565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b8281101561042c5788860151825594840194600190910190840161040d565b508582101561046857878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b0190555056fea26469706673582212201558a234c57fb3b30890fe71aa4dcb47a613d6b57f6429d816e30d1fb303218564736f6c63430008110033",
              "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 0x691F3431 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0x77372213 EQ PUSH2 0x64 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4E PUSH2 0x49 CALLDATASIZE PUSH1 0x4 PUSH2 0x130 JUMP JUMPDEST PUSH2 0x79 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5B SWAP2 SWAP1 PUSH2 0x149 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x77 PUSH2 0x72 CALLDATASIZE PUSH1 0x4 PUSH2 0x1E4 JUMP JUMPDEST PUSH2 0x113 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP2 SWAP1 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH2 0x92 SWAP1 PUSH2 0x2BD JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xBE SWAP1 PUSH2 0x2BD JUMP JUMPDEST DUP1 ISZERO PUSH2 0x10B JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xE0 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x10B JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xEE JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x12B DUP3 DUP3 PUSH2 0x35E JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x142 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x176 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x15A JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x40 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x40 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x22A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x23C JUMPI PUSH2 0x23C PUSH2 0x1B5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x282 JUMPI PUSH2 0x282 PUSH2 0x1B5 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x29B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x2D1 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x30A JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x12B 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 0x337 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x356 JUMPI DUP3 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x343 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x378 JUMPI PUSH2 0x378 PUSH2 0x1B5 JUMP JUMPDEST PUSH2 0x38C DUP2 PUSH2 0x386 DUP5 SLOAD PUSH2 0x2BD JUMP JUMPDEST DUP5 PUSH2 0x310 JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH2 0x3DF JUMPI PUSH1 0x0 DUP5 ISZERO PUSH2 0x3A9 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 0x356 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x42C JUMPI DUP9 DUP7 ADD MLOAD DUP3 SSTORE SWAP5 DUP5 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 DUP5 ADD PUSH2 0x40D JUMP JUMPDEST POP DUP6 DUP3 LT ISZERO PUSH2 0x468 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 ISZERO PC LOG2 CALLVALUE 0xC5 PUSH32 0xB3B30890FE71AA4DCB47A613D6B57F6429D816E30D1FB303218564736F6C6343 STOP ADDMOD GT STOP CALLER ",
              "sourceMap": "26:172:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;56:39;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;102:94;;;;;;:::i;:::-;;:::i;:::-;;56:39;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;102:94::-;171:4;:10;;;;;;;;;;:18;184:5;171:10;:18;:::i;:::-;;102:94;;:::o;14:180:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:1;;14:180;-1:-1:-1;14:180:1:o;199:607::-;311:4;340:2;369;358:9;351:21;401:6;395:13;444:6;439:2;428:9;424:18;417:34;469:1;479:140;493:6;490:1;487:13;479:140;;;588:14;;;584:23;;578:30;554:17;;;573:2;550:26;543:66;508:10;;479:140;;;483:3;668:1;663:2;654:6;643:9;639:22;635:31;628:42;797:2;727:66;722:2;714:6;710:15;706:88;695:9;691:104;687:113;679:121;;;;199:607;;;;:::o;811:184::-;863:77;860:1;853:88;960:4;957:1;950:15;984:4;981:1;974:15;1000:1049;1078:6;1086;1139:2;1127:9;1118:7;1114:23;1110:32;1107:52;;;1155:1;1152;1145:12;1107:52;1191:9;1178:23;1168:33;;1252:2;1241:9;1237:18;1224:32;1275:18;1316:2;1308:6;1305:14;1302:34;;;1332:1;1329;1322:12;1302:34;1370:6;1359:9;1355:22;1345:32;;1415:7;1408:4;1404:2;1400:13;1396:27;1386:55;;1437:1;1434;1427:12;1386:55;1473:2;1460:16;1495:2;1491;1488:10;1485:36;;;1501:18;;:::i;:::-;1635:2;1629:9;1697:4;1689:13;;1540:66;1685:22;;;1709:2;1681:31;1677:40;1665:53;;;1733:18;;;1753:22;;;1730:46;1727:72;;;1779:18;;:::i;:::-;1819:10;1815:2;1808:22;1854:2;1846:6;1839:18;1894:7;1889:2;1884;1880;1876:11;1872:20;1869:33;1866:53;;;1915:1;1912;1905:12;1866:53;1971:2;1966;1962;1958:11;1953:2;1945:6;1941:15;1928:46;2016:1;2011:2;2006;1998:6;1994:15;1990:24;1983:35;2037:6;2027:16;;;;;;;1000:1049;;;;;:::o;2054:437::-;2133:1;2129:12;;;;2176;;;2197:61;;2251:4;2243:6;2239:17;2229:27;;2197:61;2304:2;2296:6;2293:14;2273:18;2270:38;2267:218;;2341:77;2338:1;2331:88;2442:4;2439:1;2432:15;2470:4;2467:1;2460:15;2267:218;;2054:437;;;:::o;2622:545::-;2724:2;2719:3;2716:11;2713:448;;;2760:1;2785:5;2781:2;2774:17;2830:4;2826:2;2816:19;2900:2;2888:10;2884:19;2881:1;2877:27;2871:4;2867:38;2936:4;2924:10;2921:20;2918:47;;;-1:-1:-1;2959:4:1;2918:47;3014:2;3009:3;3005:12;3002:1;2998:20;2992:4;2988:31;2978:41;;3069:82;3087:2;3080:5;3077:13;3069:82;;;3132:17;;;3113:1;3102:13;3069:82;;;3073:3;;;2622:545;;;:::o;3403:1471::-;3529:3;3523:10;3556:18;3548:6;3545:30;3542:56;;;3578:18;;:::i;:::-;3607:97;3697:6;3657:38;3689:4;3683:11;3657:38;:::i;:::-;3651:4;3607:97;:::i;:::-;3759:4;;3823:2;3812:14;;3840:1;3835:782;;;;4661:1;4678:6;4675:89;;;-1:-1:-1;4730:19:1;;;4724:26;4675:89;3309:66;3300:1;3296:11;;;3292:84;3288:89;3278:100;3384:1;3380:11;;;3275:117;4777:81;;3805:1063;;3835:782;2569:1;2562:14;;;2606:4;2593:18;;3883:66;3871:79;;;4048:236;4062:7;4059:1;4056:14;4048:236;;;4151:19;;;4145:26;4130:42;;4243:27;;;;4211:1;4199:14;;;;4078:19;;4048:236;;;4052:3;4312:6;4303:7;4300:19;4297:261;;;4373:19;;;4367:26;4474:66;4456:1;4452:14;;;4468:3;4448:24;4444:97;4440:102;4425:118;4410:134;;4297:261;-1:-1:-1;;;;;4604:1:1;4588:14;;;4584:22;4571:36;;-1:-1:-1;3403:1471:1:o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "239600",
                "executionCost": "281",
                "totalCost": "239881"
              },
              "external": {
                "name(bytes32)": "infinite",
                "setName(bytes32,string)": "infinite"
              }
            },
            "methodIdentifiers": {
              "name(bytes32)": "691f3431",
              "setName(bytes32,string)": "77372213"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"}],\"name\":\"setName\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/registry/mocks/DummyResolver.sol\":\"DummyResolver\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"test/registry/mocks/DummyResolver.sol\":{\"content\":\"pragma solidity >=0.8.4;\\n\\ncontract DummyResolver {\\n\\n    mapping (bytes32 => string) public name;\\n\\n    function setName(bytes32 node, string memory _name) public {\\n        name[node] = _name;\\n    }\\n}\\n\",\"keccak256\":\"0xb793daecb3e4fae3f75a012cea5a5d6e0879b24361328176b73d0fd7da1f184a\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 5,
                "contract": "test/registry/mocks/DummyResolver.sol:DummyResolver",
                "label": "name",
                "offset": 0,
                "slot": "0",
                "type": "t_mapping(t_bytes32,t_string_storage)"
              }
            ],
            "types": {
              "t_bytes32": {
                "encoding": "inplace",
                "label": "bytes32",
                "numberOfBytes": "32"
              },
              "t_mapping(t_bytes32,t_string_storage)": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => string)",
                "numberOfBytes": "32",
                "value": "t_string_storage"
              },
              "t_string_storage": {
                "encoding": "bytes",
                "label": "string",
                "numberOfBytes": "32"
              }
            }
          },
          "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--> test/registry/mocks/DummyResolver.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": "test/registry/mocks/DummyResolver.sol",
          "start": -1
        },
        "type": "Warning"
      }
    ],
    "sources": {
      "test/registry/mocks/DummyResolver.sol": {
        "ast": {
          "absolutePath": "test/registry/mocks/DummyResolver.sol",
          "exportedSymbols": {
            "DummyResolver": [
              20
            ]
          },
          "id": 21,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:0"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "DummyResolver",
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 20,
              "linearizedBaseContracts": [
                20
              ],
              "name": "DummyResolver",
              "nameLocation": "35:13:0",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "functionSelector": "691f3431",
                  "id": 5,
                  "mutability": "mutable",
                  "name": "name",
                  "nameLocation": "91:4:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 20,
                  "src": "56:39:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_string_storage_$",
                    "typeString": "mapping(bytes32 => string)"
                  },
                  "typeName": {
                    "id": 4,
                    "keyType": {
                      "id": 2,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "65:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "56:27:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_string_storage_$",
                      "typeString": "mapping(bytes32 => string)"
                    },
                    "valueType": {
                      "id": 3,
                      "name": "string",
                      "nodeType": "ElementaryTypeName",
                      "src": "76:6:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage_ptr",
                        "typeString": "string"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 18,
                    "nodeType": "Block",
                    "src": "161:35:0",
                    "statements": [
                      {
                        "expression": {
                          "id": 16,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 12,
                              "name": "name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5,
                              "src": "171:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_string_storage_$",
                                "typeString": "mapping(bytes32 => string storage ref)"
                              }
                            },
                            "id": 14,
                            "indexExpression": {
                              "id": 13,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7,
                              "src": "176:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "171:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 15,
                            "name": "_name",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9,
                            "src": "184:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "171:18:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 17,
                        "nodeType": "ExpressionStatement",
                        "src": "171:18:0"
                      }
                    ]
                  },
                  "functionSelector": "77372213",
                  "id": 19,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setName",
                  "nameLocation": "111:7:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "127:4:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 19,
                        "src": "119:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 6,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "119:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9,
                        "mutability": "mutable",
                        "name": "_name",
                        "nameLocation": "147:5:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 19,
                        "src": "133:19:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 8,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "133:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "118:35:0"
                  },
                  "returnParameters": {
                    "id": 11,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "161:0:0"
                  },
                  "scope": 20,
                  "src": "102:94:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 21,
              "src": "26:172:0",
              "usedErrors": []
            }
          ],
          "src": "0:199:0"
        },
        "id": 0
      }
    }
  }
}
