{
  "id": "7c015184e7012b2c789150bf4de9a16c",
  "_format": "hh-sol-build-info-1",
  "solcVersion": "0.8.7",
  "solcLongVersion": "0.8.7+commit.e28d00a7",
  "input": {
    "language": "Solidity",
    "sources": {
      "contracts/mock/MockEns.sol": {
        "content": "pragma solidity ^0.8.7;\n\ncontract MockEns {\n    // ENS BASE MOCKS\n    function owner(bytes32 node) public view returns (address) {\n        return address(0);\n    }\n\n    function setSubnodeRecord(\n        bytes32 node,\n        bytes32 label,\n        address owner,\n        address resolver,\n        uint64 value\n    ) public {\n        return;\n    }\n\n    function setApprovalForAll(address to, bool approved) public {\n        return;\n    }\n\n    function setAddr(bytes32 node, address nodeAddress) public {\n        return;\n    }\n}\n"
      }
    },
    "settings": {
      "optimizer": {
        "enabled": true,
        "runs": 1000
      },
      "outputSelection": {
        "*": {
          "*": [
            "abi",
            "evm.bytecode",
            "evm.deployedBytecode",
            "evm.methodIdentifiers",
            "metadata",
            "devdoc",
            "userdoc",
            "storageLayout",
            "evm.gasEstimates"
          ],
          "": [
            "ast"
          ]
        }
      },
      "metadata": {
        "useLiteralContent": true
      },
      "libraries": {
        "": {
          "__CACHE_BREAKER__": "0x0000000000000031363637343837323630363233"
        }
      }
    }
  },
  "output": {
    "contracts": {
      "contracts/mock/MockEns.sol": {
        "MockEns": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "nodeAddress",
                  "type": "address"
                }
              ],
              "name": "setAddr",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                }
              ],
              "name": "setApprovalForAll",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "label",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "resolver",
                  "type": "address"
                },
                {
                  "internalType": "uint64",
                  "name": "value",
                  "type": "uint64"
                }
              ],
              "name": "setSubnodeRecord",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b5061020d806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806302571be3146100515780635ef2c7f01461008e578063a22cb465146100a5578063d5fa2b00146100b7575b600080fd5b61006561005f36600461012a565b50600090565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100a361009c36600461016f565b5050505050565b005b6100a36100b33660046100ee565b5050565b6100a36100b3366004610143565b803573ffffffffffffffffffffffffffffffffffffffff811681146100e957600080fd5b919050565b6000806040838503121561010157600080fd5b61010a836100c5565b91506020830135801515811461011f57600080fd5b809150509250929050565b60006020828403121561013c57600080fd5b5035919050565b6000806040838503121561015657600080fd5b82359150610166602084016100c5565b90509250929050565b600080600080600060a0868803121561018757600080fd5b853594506020860135935061019e604087016100c5565b92506101ac606087016100c5565b9150608086013567ffffffffffffffff811681146101c957600080fd5b80915050929550929590935056fea2646970667358221220a363cde02620587c2eced6d68c7e1bdad61f41af373380092adffebff5e936d764736f6c63430008070033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20D 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 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2571BE3 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x5EF2C7F0 EQ PUSH2 0x8E JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0xA5 JUMPI DUP1 PUSH4 0xD5FA2B00 EQ PUSH2 0xB7 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x65 PUSH2 0x5F CALLDATASIZE PUSH1 0x4 PUSH2 0x12A JUMP JUMPDEST POP PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA3 PUSH2 0x9C CALLDATASIZE PUSH1 0x4 PUSH2 0x16F JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST STOP JUMPDEST PUSH2 0xA3 PUSH2 0xB3 CALLDATASIZE PUSH1 0x4 PUSH2 0xEE JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0xA3 PUSH2 0xB3 CALLDATASIZE PUSH1 0x4 PUSH2 0x143 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x101 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10A DUP4 PUSH2 0xC5 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x11F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x13C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x156 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x166 PUSH1 0x20 DUP5 ADD PUSH2 0xC5 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x187 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH2 0x19E PUSH1 0x40 DUP8 ADD PUSH2 0xC5 JUMP JUMPDEST SWAP3 POP PUSH2 0x1AC PUSH1 0x60 DUP8 ADD PUSH2 0xC5 JUMP JUMPDEST SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG3 PUSH4 0xCDE02620 PC PUSH29 0x2ECED6D68C7E1BDAD61F41AF373380092ADFFEBFF5E936D764736F6C63 NUMBER STOP ADDMOD SMOD STOP CALLER ",
              "sourceMap": "25:502:0:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@owner_14": {
                  "entryPoint": null,
                  "id": 14,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@setAddr_47": {
                  "entryPoint": null,
                  "id": 47,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@setApprovalForAll_38": {
                  "entryPoint": null,
                  "id": 38,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@setSubnodeRecord_29": {
                  "entryPoint": null,
                  "id": 29,
                  "parameterSlots": 5,
                  "returnSlots": 0
                },
                "abi_decode_address": {
                  "entryPoint": 197,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_addresst_bool": {
                  "entryPoint": 238,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bytes32": {
                  "entryPoint": 298,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes32t_address": {
                  "entryPoint": 323,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bytes32t_bytes32t_addresst_addresst_uint64": {
                  "entryPoint": 367,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 5
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:1814:1",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:1",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "63:147:1",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "73:29:1",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "95:6:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "82:12:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "82:20:1"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "73:5:1"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "188:16:1",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "197:1:1",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "200:1:1",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "190:6:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "190:12:1"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "190:12:1"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "124:5:1"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "135:5:1"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "142:42:1",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "131:3:1"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "131:54:1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "121:2:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "121:65:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "114:6:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "114:73:1"
                              },
                              "nodeType": "YulIf",
                              "src": "111:93:1"
                            }
                          ]
                        },
                        "name": "abi_decode_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "42:6:1",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "53:5:1",
                            "type": ""
                          }
                        ],
                        "src": "14:196:1"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "299:263:1",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "345:16:1",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "354:1:1",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "357:1:1",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "347:6:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "347:12:1"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "347:12:1"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "320:7:1"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "329:9:1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "316:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "316:23:1"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "341:2:1",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "312:3:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "312:32:1"
                              },
                              "nodeType": "YulIf",
                              "src": "309:52:1"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "370:39:1",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "399:9:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "380:18:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "380:29:1"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "370:6:1"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "418:45:1",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "448:9:1"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "459:2:1",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "444:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "444:18:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "431:12:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "431:32:1"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "422:5:1",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "516:16:1",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "525:1:1",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "528:1:1",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "518:6:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "518:12:1"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "518:12:1"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "485:5:1"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "506:5:1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "499:6:1"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "499:13:1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "492:6:1"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "492:21:1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "482:2:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "482:32:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "475:6:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "475:40:1"
                              },
                              "nodeType": "YulIf",
                              "src": "472:60:1"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "541:15:1",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "551:5:1"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "541:6:1"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "257:9:1",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "268:7:1",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "280:6:1",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "288:6:1",
                            "type": ""
                          }
                        ],
                        "src": "215:347:1"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "637:110:1",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "683:16:1",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "692:1:1",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "695:1:1",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "685:6:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "685:12:1"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "685:12:1"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "658:7:1"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "667:9:1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "654:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "654:23:1"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "679:2:1",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "650:3:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "650:32:1"
                              },
                              "nodeType": "YulIf",
                              "src": "647:52:1"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "708:33:1",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "731:9:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "718:12:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "718:23:1"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "708:6:1"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "603:9:1",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "614:7:1",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "626:6:1",
                            "type": ""
                          }
                        ],
                        "src": "567:180:1"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "839:167:1",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "885:16:1",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "894:1:1",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "897:1:1",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "887:6:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "887:12:1"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "887:12:1"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "860:7:1"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "869:9:1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "856:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "856:23:1"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "881:2:1",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "852:3:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "852:32:1"
                              },
                              "nodeType": "YulIf",
                              "src": "849:52:1"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "910:33:1",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "933:9:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "920:12:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "920:23:1"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "910:6:1"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "952:48:1",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "985:9:1"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "996:2:1",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "981:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "981:18:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "962:18:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "962:38:1"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "952:6:1"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "797:9:1",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "808:7:1",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "820:6:1",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "828:6:1",
                            "type": ""
                          }
                        ],
                        "src": "752:254:1"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1148:433:1",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1195:16:1",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1204:1:1",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1207:1:1",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1197:6:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1197:12:1"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1197:12:1"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1169:7:1"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1178:9:1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1165:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1165:23:1"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1190:3:1",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1161:3:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1161:33:1"
                              },
                              "nodeType": "YulIf",
                              "src": "1158:53:1"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1220:33:1",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1243:9:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1230:12:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1230:23:1"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1220:6:1"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1262:42:1",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1289:9:1"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1300:2:1",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1285:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1285:18:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1272:12:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1272:32:1"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1262:6:1"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1313:48:1",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1346:9:1"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1357:2:1",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1342:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1342:18:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1323:18:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1323:38:1"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1313:6:1"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1370:48:1",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1403:9:1"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1414:2:1",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1399:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1399:18:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1380:18:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1380:38:1"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "1370:6:1"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1427:46:1",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1457:9:1"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1468:3:1",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1453:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1453:19:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1440:12:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1440:33:1"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "1431:5:1",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1535:16:1",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1544:1:1",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1547:1:1",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1537:6:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1537:12:1"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1537:12:1"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "1495:5:1"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "1506:5:1"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1513:18:1",
                                            "type": "",
                                            "value": "0xffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "1502:3:1"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1502:30:1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "1492:2:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1492:41:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1485:6:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1485:49:1"
                              },
                              "nodeType": "YulIf",
                              "src": "1482:69:1"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1560:15:1",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "1570:5:1"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "1560:6:1"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_bytes32t_addresst_addresst_uint64",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1082:9:1",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1093:7:1",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1105:6:1",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1113:6:1",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "1121:6:1",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "1129:6:1",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "1137:6:1",
                            "type": ""
                          }
                        ],
                        "src": "1011:570:1"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1687:125:1",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1697:26:1",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1709:9:1"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1720:2:1",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1705:3:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1705:18:1"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1697:4:1"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1739:9:1"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "1754:6:1"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1762:42:1",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1750:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1750:55:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1732:6:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1732:74:1"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1732:74:1"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1656:9:1",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1667:6:1",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1678:4:1",
                            "type": ""
                          }
                        ],
                        "src": "1586:226:1"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        let value := calldataload(add(headStart, 32))\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n        value1 := value\n    }\n    function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_bytes32t_bytes32t_addresst_addresst_uint64(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n        value2 := abi_decode_address(add(headStart, 64))\n        value3 := abi_decode_address(add(headStart, 96))\n        let value := calldataload(add(headStart, 128))\n        if iszero(eq(value, and(value, 0xffffffffffffffff))) { revert(0, 0) }\n        value4 := value\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n}",
                  "id": 1,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061004c5760003560e01c806302571be3146100515780635ef2c7f01461008e578063a22cb465146100a5578063d5fa2b00146100b7575b600080fd5b61006561005f36600461012a565b50600090565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100a361009c36600461016f565b5050505050565b005b6100a36100b33660046100ee565b5050565b6100a36100b3366004610143565b803573ffffffffffffffffffffffffffffffffffffffff811681146100e957600080fd5b919050565b6000806040838503121561010157600080fd5b61010a836100c5565b91506020830135801515811461011f57600080fd5b809150509250929050565b60006020828403121561013c57600080fd5b5035919050565b6000806040838503121561015657600080fd5b82359150610166602084016100c5565b90509250929050565b600080600080600060a0868803121561018757600080fd5b853594506020860135935061019e604087016100c5565b92506101ac606087016100c5565b9150608086013567ffffffffffffffff811681146101c957600080fd5b80915050929550929590935056fea2646970667358221220a363cde02620587c2eced6d68c7e1bdad61f41af373380092adffebff5e936d764736f6c63430008070033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2571BE3 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x5EF2C7F0 EQ PUSH2 0x8E JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0xA5 JUMPI DUP1 PUSH4 0xD5FA2B00 EQ PUSH2 0xB7 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x65 PUSH2 0x5F CALLDATASIZE PUSH1 0x4 PUSH2 0x12A JUMP JUMPDEST POP PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA3 PUSH2 0x9C CALLDATASIZE PUSH1 0x4 PUSH2 0x16F JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST STOP JUMPDEST PUSH2 0xA3 PUSH2 0xB3 CALLDATASIZE PUSH1 0x4 PUSH2 0xEE JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0xA3 PUSH2 0xB3 CALLDATASIZE PUSH1 0x4 PUSH2 0x143 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x101 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10A DUP4 PUSH2 0xC5 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x11F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x13C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x156 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x166 PUSH1 0x20 DUP5 ADD PUSH2 0xC5 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x187 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH2 0x19E PUSH1 0x40 DUP8 ADD PUSH2 0xC5 JUMP JUMPDEST SWAP3 POP PUSH2 0x1AC PUSH1 0x60 DUP8 ADD PUSH2 0xC5 JUMP JUMPDEST SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG3 PUSH4 0xCDE02620 PC PUSH29 0x2ECED6D68C7E1BDAD61F41AF373380092ADFFEBFF5E936D764736F6C63 NUMBER STOP ADDMOD SMOD STOP CALLER ",
              "sourceMap": "25:502:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;70:93;;;;;;:::i;:::-;-1:-1:-1;120:7:0;;70:93;;;;1762:42:1;1750:55;;;1732:74;;1720:2;1705:18;70:93:0;;;;;;;169:178;;;;;;:::i;:::-;;;;;;;;;353:84;;;;;;:::i;:::-;;;;443:82;;;;;;:::i;14:196:1:-;82:20;;142:42;131:54;;121:65;;111:93;;200:1;197;190:12;111:93;14:196;;;:::o;215:347::-;280:6;288;341:2;329:9;320:7;316:23;312:32;309:52;;;357:1;354;347:12;309:52;380:29;399:9;380:29;:::i;:::-;370:39;;459:2;448:9;444:18;431:32;506:5;499:13;492:21;485:5;482:32;472:60;;528:1;525;518:12;472:60;551:5;541:15;;;215:347;;;;;:::o;567:180::-;626:6;679:2;667:9;658:7;654:23;650:32;647:52;;;695:1;692;685:12;647:52;-1:-1:-1;718:23:1;;567:180;-1:-1:-1;567:180:1:o;752:254::-;820:6;828;881:2;869:9;860:7;856:23;852:32;849:52;;;897:1;894;887:12;849:52;933:9;920:23;910:33;;962:38;996:2;985:9;981:18;962:38;:::i;:::-;952:48;;752:254;;;;;:::o;1011:570::-;1105:6;1113;1121;1129;1137;1190:3;1178:9;1169:7;1165:23;1161:33;1158:53;;;1207:1;1204;1197:12;1158:53;1243:9;1230:23;1220:33;;1300:2;1289:9;1285:18;1272:32;1262:42;;1323:38;1357:2;1346:9;1342:18;1323:38;:::i;:::-;1313:48;;1380:38;1414:2;1403:9;1399:18;1380:38;:::i;:::-;1370:48;;1468:3;1457:9;1453:19;1440:33;1513:18;1506:5;1502:30;1495:5;1492:41;1482:69;;1547:1;1544;1537:12;1482:69;1570:5;1560:15;;;1011:570;;;;;;;;:::o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "105000",
                "executionCost": "153",
                "totalCost": "105153"
              },
              "external": {
                "owner(bytes32)": "249",
                "setAddr(bytes32,address)": "352",
                "setApprovalForAll(address,bool)": "364",
                "setSubnodeRecord(bytes32,bytes32,address,address,uint64)": "infinite"
              }
            },
            "methodIdentifiers": {
              "owner(bytes32)": "02571be3",
              "setAddr(bytes32,address)": "d5fa2b00",
              "setApprovalForAll(address,bool)": "a22cb465",
              "setSubnodeRecord(bytes32,bytes32,address,address,uint64)": "5ef2c7f0"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"nodeAddress\",\"type\":\"address\"}],\"name\":\"setAddr\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"label\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"setSubnodeRecord\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/mock/MockEns.sol\":\"MockEns\"},\"evmVersion\":\"london\",\"libraries\":{\":__CACHE_BREAKER__\":\"0x0000000000000031363637343837323630363233\"},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"contracts/mock/MockEns.sol\":{\"content\":\"pragma solidity ^0.8.7;\\n\\ncontract MockEns {\\n    // ENS BASE MOCKS\\n    function owner(bytes32 node) public view returns (address) {\\n        return address(0);\\n    }\\n\\n    function setSubnodeRecord(\\n        bytes32 node,\\n        bytes32 label,\\n        address owner,\\n        address resolver,\\n        uint64 value\\n    ) public {\\n        return;\\n    }\\n\\n    function setApprovalForAll(address to, bool approved) public {\\n        return;\\n    }\\n\\n    function setAddr(bytes32 node, address nodeAddress) public {\\n        return;\\n    }\\n}\\n\",\"keccak256\":\"0x76e7881dc475bed4889d34d25bc714b5e2ed93a5ce8604d182a1888a871158b0\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      }
    },
    "errors": [
      {
        "component": "general",
        "errorCode": "1878",
        "formattedMessage": "Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n--> contracts/mock/MockEns.sol\n\n",
        "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
        "severity": "warning",
        "sourceLocation": {
          "end": -1,
          "file": "contracts/mock/MockEns.sol",
          "start": -1
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "2519",
        "formattedMessage": "Warning: This declaration shadows an existing declaration.\n  --> contracts/mock/MockEns.sol:12:9:\n   |\n12 |         address owner,\n   |         ^^^^^^^^^^^^^\nNote: The shadowed declaration is here:\n --> contracts/mock/MockEns.sol:5:5:\n  |\n5 |     function owner(bytes32 node) public view returns (address) {\n  |     ^ (Relevant source part starts here and spans across multiple lines).\n\n",
        "message": "This declaration shadows an existing declaration.",
        "secondarySourceLocations": [
          {
            "end": 163,
            "file": "contracts/mock/MockEns.sol",
            "message": "The shadowed declaration is here:",
            "start": 70
          }
        ],
        "severity": "warning",
        "sourceLocation": {
          "end": 262,
          "file": "contracts/mock/MockEns.sol",
          "start": 249
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "5667",
        "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n --> contracts/mock/MockEns.sol:5:20:\n  |\n5 |     function owner(bytes32 node) public view returns (address) {\n  |                    ^^^^^^^^^^^^\n\n",
        "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
        "severity": "warning",
        "sourceLocation": {
          "end": 97,
          "file": "contracts/mock/MockEns.sol",
          "start": 85
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "5667",
        "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n  --> contracts/mock/MockEns.sol:10:9:\n   |\n10 |         bytes32 node,\n   |         ^^^^^^^^^^^^\n\n",
        "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
        "severity": "warning",
        "sourceLocation": {
          "end": 216,
          "file": "contracts/mock/MockEns.sol",
          "start": 204
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "5667",
        "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n  --> contracts/mock/MockEns.sol:11:9:\n   |\n11 |         bytes32 label,\n   |         ^^^^^^^^^^^^^\n\n",
        "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
        "severity": "warning",
        "sourceLocation": {
          "end": 239,
          "file": "contracts/mock/MockEns.sol",
          "start": 226
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "5667",
        "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n  --> contracts/mock/MockEns.sol:12:9:\n   |\n12 |         address owner,\n   |         ^^^^^^^^^^^^^\n\n",
        "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
        "severity": "warning",
        "sourceLocation": {
          "end": 262,
          "file": "contracts/mock/MockEns.sol",
          "start": 249
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "5667",
        "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n  --> contracts/mock/MockEns.sol:13:9:\n   |\n13 |         address resolver,\n   |         ^^^^^^^^^^^^^^^^\n\n",
        "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
        "severity": "warning",
        "sourceLocation": {
          "end": 288,
          "file": "contracts/mock/MockEns.sol",
          "start": 272
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "5667",
        "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n  --> contracts/mock/MockEns.sol:14:9:\n   |\n14 |         uint64 value\n   |         ^^^^^^^^^^^^\n\n",
        "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
        "severity": "warning",
        "sourceLocation": {
          "end": 310,
          "file": "contracts/mock/MockEns.sol",
          "start": 298
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "5667",
        "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n  --> contracts/mock/MockEns.sol:19:32:\n   |\n19 |     function setApprovalForAll(address to, bool approved) public {\n   |                                ^^^^^^^^^^\n\n",
        "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
        "severity": "warning",
        "sourceLocation": {
          "end": 390,
          "file": "contracts/mock/MockEns.sol",
          "start": 380
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "5667",
        "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n  --> contracts/mock/MockEns.sol:19:44:\n   |\n19 |     function setApprovalForAll(address to, bool approved) public {\n   |                                            ^^^^^^^^^^^^^\n\n",
        "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
        "severity": "warning",
        "sourceLocation": {
          "end": 405,
          "file": "contracts/mock/MockEns.sol",
          "start": 392
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "5667",
        "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n  --> contracts/mock/MockEns.sol:23:22:\n   |\n23 |     function setAddr(bytes32 node, address nodeAddress) public {\n   |                      ^^^^^^^^^^^^\n\n",
        "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
        "severity": "warning",
        "sourceLocation": {
          "end": 472,
          "file": "contracts/mock/MockEns.sol",
          "start": 460
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "5667",
        "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n  --> contracts/mock/MockEns.sol:23:36:\n   |\n23 |     function setAddr(bytes32 node, address nodeAddress) public {\n   |                                    ^^^^^^^^^^^^^^^^^^^\n\n",
        "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
        "severity": "warning",
        "sourceLocation": {
          "end": 493,
          "file": "contracts/mock/MockEns.sol",
          "start": 474
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "2018",
        "formattedMessage": "Warning: Function state mutability can be restricted to pure\n --> contracts/mock/MockEns.sol:5:5:\n  |\n5 |     function owner(bytes32 node) public view returns (address) {\n  |     ^ (Relevant source part starts here and spans across multiple lines).\n\n",
        "message": "Function state mutability can be restricted to pure",
        "severity": "warning",
        "sourceLocation": {
          "end": 163,
          "file": "contracts/mock/MockEns.sol",
          "start": 70
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "2018",
        "formattedMessage": "Warning: Function state mutability can be restricted to pure\n --> contracts/mock/MockEns.sol:9:5:\n  |\n9 |     function setSubnodeRecord(\n  |     ^ (Relevant source part starts here and spans across multiple lines).\n\n",
        "message": "Function state mutability can be restricted to pure",
        "severity": "warning",
        "sourceLocation": {
          "end": 347,
          "file": "contracts/mock/MockEns.sol",
          "start": 169
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "2018",
        "formattedMessage": "Warning: Function state mutability can be restricted to pure\n  --> contracts/mock/MockEns.sol:19:5:\n   |\n19 |     function setApprovalForAll(address to, bool approved) public {\n   |     ^ (Relevant source part starts here and spans across multiple lines).\n\n",
        "message": "Function state mutability can be restricted to pure",
        "severity": "warning",
        "sourceLocation": {
          "end": 437,
          "file": "contracts/mock/MockEns.sol",
          "start": 353
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "2018",
        "formattedMessage": "Warning: Function state mutability can be restricted to pure\n  --> contracts/mock/MockEns.sol:23:5:\n   |\n23 |     function setAddr(bytes32 node, address nodeAddress) public {\n   |     ^ (Relevant source part starts here and spans across multiple lines).\n\n",
        "message": "Function state mutability can be restricted to pure",
        "severity": "warning",
        "sourceLocation": {
          "end": 525,
          "file": "contracts/mock/MockEns.sol",
          "start": 443
        },
        "type": "Warning"
      }
    ],
    "sources": {
      "contracts/mock/MockEns.sol": {
        "ast": {
          "absolutePath": "contracts/mock/MockEns.sol",
          "exportedSymbols": {
            "MockEns": [
              48
            ]
          },
          "id": 49,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".7"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:23:0"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 48,
              "linearizedBaseContracts": [
                48
              ],
              "name": "MockEns",
              "nameLocation": "34:7:0",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 13,
                    "nodeType": "Block",
                    "src": "129:34:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 10,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "154:1:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 9,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "146:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 8,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "146:7:0",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 11,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "146:10:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 7,
                        "id": 12,
                        "nodeType": "Return",
                        "src": "139:17:0"
                      }
                    ]
                  },
                  "functionSelector": "02571be3",
                  "id": 14,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "owner",
                  "nameLocation": "79:5:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "93:4:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 14,
                        "src": "85:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "85:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "84:14:0"
                  },
                  "returnParameters": {
                    "id": 7,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 14,
                        "src": "120:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "120:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "119:9:0"
                  },
                  "scope": 48,
                  "src": "70:93:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 28,
                    "nodeType": "Block",
                    "src": "324:23:0",
                    "statements": [
                      {
                        "functionReturnParameters": 26,
                        "id": 27,
                        "nodeType": "Return",
                        "src": "334:7:0"
                      }
                    ]
                  },
                  "functionSelector": "5ef2c7f0",
                  "id": 29,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setSubnodeRecord",
                  "nameLocation": "178:16:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "212:4:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 29,
                        "src": "204:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 15,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "204:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18,
                        "mutability": "mutable",
                        "name": "label",
                        "nameLocation": "234:5:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 29,
                        "src": "226:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 17,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "226:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "257:5:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 29,
                        "src": "249:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "249:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22,
                        "mutability": "mutable",
                        "name": "resolver",
                        "nameLocation": "280:8:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 29,
                        "src": "272:16:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "272:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "305:5:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 29,
                        "src": "298:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 23,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "298:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "194:122:0"
                  },
                  "returnParameters": {
                    "id": 26,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "324:0:0"
                  },
                  "scope": 48,
                  "src": "169:178:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 37,
                    "nodeType": "Block",
                    "src": "414:23:0",
                    "statements": [
                      {
                        "functionReturnParameters": 35,
                        "id": 36,
                        "nodeType": "Return",
                        "src": "424:7:0"
                      }
                    ]
                  },
                  "functionSelector": "a22cb465",
                  "id": 38,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setApprovalForAll",
                  "nameLocation": "362:17:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 34,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "388:2:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 38,
                        "src": "380:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 30,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "380:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 33,
                        "mutability": "mutable",
                        "name": "approved",
                        "nameLocation": "397:8:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 38,
                        "src": "392:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 32,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "392:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "379:27:0"
                  },
                  "returnParameters": {
                    "id": 35,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "414:0:0"
                  },
                  "scope": 48,
                  "src": "353:84:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 46,
                    "nodeType": "Block",
                    "src": "502:23:0",
                    "statements": [
                      {
                        "functionReturnParameters": 44,
                        "id": 45,
                        "nodeType": "Return",
                        "src": "512:7:0"
                      }
                    ]
                  },
                  "functionSelector": "d5fa2b00",
                  "id": 47,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setAddr",
                  "nameLocation": "452:7:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 43,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 40,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "468:4:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 47,
                        "src": "460:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 39,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "460:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 42,
                        "mutability": "mutable",
                        "name": "nodeAddress",
                        "nameLocation": "482:11:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 47,
                        "src": "474:19:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 41,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "474:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "459:35:0"
                  },
                  "returnParameters": {
                    "id": 44,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "502:0:0"
                  },
                  "scope": 48,
                  "src": "443:82:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 49,
              "src": "25:502:0",
              "usedErrors": []
            }
          ],
          "src": "0:528:0"
        },
        "id": 0
      }
    }
  }
}
