{
  "contractName": "PublicResolver",
  "abi": [
    {
      "inputs": [
        {
          "name": "ensAddr",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "node",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "name": "a",
          "type": "address"
        }
      ],
      "name": "AddrChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "node",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "name": "hash",
          "type": "bytes32"
        }
      ],
      "name": "ContentChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "node",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "name": "name",
          "type": "string"
        }
      ],
      "name": "NameChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "node",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "name": "contentType",
          "type": "uint256"
        }
      ],
      "name": "ABIChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "node",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "name": "x",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "name": "y",
          "type": "bytes32"
        }
      ],
      "name": "PubkeyChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "node",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "name": "indexedKey",
          "type": "string"
        },
        {
          "indexed": false,
          "name": "key",
          "type": "string"
        }
      ],
      "name": "TextChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "node",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "name": "hash",
          "type": "bytes"
        }
      ],
      "name": "MultihashChanged",
      "type": "event"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        },
        {
          "name": "addr",
          "type": "address"
        }
      ],
      "name": "setAddr",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        },
        {
          "name": "hash",
          "type": "bytes32"
        }
      ],
      "name": "setContent",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        },
        {
          "name": "hash",
          "type": "bytes"
        }
      ],
      "name": "setMultihash",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        },
        {
          "name": "name",
          "type": "string"
        }
      ],
      "name": "setName",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        },
        {
          "name": "contentType",
          "type": "uint256"
        },
        {
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "setABI",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        },
        {
          "name": "x",
          "type": "bytes32"
        },
        {
          "name": "y",
          "type": "bytes32"
        }
      ],
      "name": "setPubkey",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        },
        {
          "name": "key",
          "type": "string"
        },
        {
          "name": "value",
          "type": "string"
        }
      ],
      "name": "setText",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        },
        {
          "name": "key",
          "type": "string"
        }
      ],
      "name": "text",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        }
      ],
      "name": "pubkey",
      "outputs": [
        {
          "name": "x",
          "type": "bytes32"
        },
        {
          "name": "y",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        },
        {
          "name": "contentTypes",
          "type": "uint256"
        }
      ],
      "name": "ABI",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        },
        {
          "name": "",
          "type": "bytes"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        }
      ],
      "name": "name",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        }
      ],
      "name": "content",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        }
      ],
      "name": "multihash",
      "outputs": [
        {
          "name": "",
          "type": "bytes"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        }
      ],
      "name": "addr",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "interfaceID",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b506040516020806120f58339810180604052602081101561003057600080fd5b8101908080519060200190929190505050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050612064806100916000396000f3fe6080604052600436106100db576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806301ffc9a7146100e057806310f13a8c146101525780632203ab56146102bb57806329cd62ea146103805780632dff6941146103cf5780633b3b57de1461041e57806359d1d43c14610499578063623195b0146105e4578063691f3431146106c05780637737221314610774578063aa4cb54714610846578063c3d014d614610918578063c86902331461095d578063d5fa2b00146109b3578063e89401a114610a0e575b600080fd5b3480156100ec57600080fd5b506101386004803603602081101561010357600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610ac2565b604051808215151515815260200191505060405180910390f35b34801561015e57600080fd5b506102b96004803603606081101561017557600080fd5b81019080803590602001909291908035906020019064010000000081111561019c57600080fd5b8201836020820111156101ae57600080fd5b803590602001918460018302840111640100000000831117156101d057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561023357600080fd5b82018360208201111561024557600080fd5b8035906020019184600183028401116401000000008311171561026757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610e1c565b005b3480156102c757600080fd5b506102fe600480360360408110156102de57600080fd5b8101908080359060200190929190803590602001909291905050506110c3565b6040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610344578082015181840152602081019050610329565b50505050905090810190601f1680156103715780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b34801561038c57600080fd5b506103cd600480360360608110156103a357600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050611213565b005b3480156103db57600080fd5b50610408600480360360208110156103f257600080fd5b810190808035906020019092919050505061139e565b6040518082815260200191505060405180910390f35b34801561042a57600080fd5b506104576004803603602081101561044157600080fd5b81019080803590602001909291905050506113be565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104a557600080fd5b50610569600480360360408110156104bc57600080fd5b8101908080359060200190929190803590602001906401000000008111156104e357600080fd5b8201836020820111156104f557600080fd5b8035906020019184600183028401116401000000008311171561051757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506113fe565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105a957808201518184015260208101905061058e565b50505050905090810190601f1680156105d65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156105f057600080fd5b506106be6004803603606081101561060757600080fd5b8101908080359060200190929190803590602001909291908035906020019064010000000081111561063857600080fd5b82018360208201111561064a57600080fd5b8035906020019184600183028401116401000000008311171561066c57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611520565b005b3480156106cc57600080fd5b506106f9600480360360208110156106e357600080fd5b81019080803590602001909291905050506116a7565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561073957808201518184015260208101905061071e565b50505050905090810190601f1680156107665780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561078057600080fd5b506108446004803603604081101561079757600080fd5b8101908080359060200190929190803590602001906401000000008111156107be57600080fd5b8201836020820111156107d057600080fd5b803590602001918460018302840111640100000000831117156107f257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061175f565b005b34801561085257600080fd5b506109166004803603604081101561086957600080fd5b81019080803590602001909291908035906020019064010000000081111561089057600080fd5b8201836020820111156108a257600080fd5b803590602001918460018302840111640100000000831117156108c457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061192f565b005b34801561092457600080fd5b5061095b6004803603604081101561093b57600080fd5b810190808035906020019092919080359060200190929190505050611aff565b005b34801561096957600080fd5b506109966004803603602081101561098057600080fd5b8101908080359060200190929190505050611c5a565b604051808381526020018281526020019250505060405180910390f35b3480156109bf57600080fd5b50610a0c600480360360408110156109d657600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c9a565b005b348015610a1a57600080fd5b50610a4760048036036020811015610a3157600080fd5b8101908080359060200190929190505050611e5b565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a87578082015181840152602081019050610a6c565b50505050905090810190601f168015610ab45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000633b3b57de7c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b93575063d8389dc57c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610bfe575063691f34317c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610c695750632203ab567c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610cd4575063c86902337c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610d3f57506359d1d43c7c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610daa575063e89401a17c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610e1557506301ffc9a77c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b823373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060206040518083038186803b158015610ec257600080fd5b505afa158015610ed6573d6000803e3d6000fd5b505050506040513d6020811015610eec57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16141515610f1f57600080fd5b8160016000868152602001908152602001600020600501846040518082805190602001908083835b602083101515610f6c5780518252602082019150602081019050602083039250610f47565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390209080519060200190610fb2929190611f13565b50837fd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a75508485604051808060200180602001838103835285818151815260200191508051906020019080838360005b8381101561101b578082015181840152602081019050611000565b50505050905090810190601f1680156110485780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b83811015611081578082015181840152602081019050611066565b50505050905090810190601f1680156110ae5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a250505050565b60006060600060016000868152602001908152602001600020905060006060600191505b85821115156111fe5760008683161415801561112c57506000836006016000848152602001908152602001600020805460018160011615610100020316600290049050115b156111ef578260060160008381526020019081526020016000208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111da5780601f106111af576101008083540402835291602001916111da565b820191906000526020600020905b8154815290600101906020018083116111bd57829003601f168201915b5050505050905081819450945050505061120c565b6001829060020a0291506110e7565b600081819150945094505050505b9250929050565b823373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060206040518083038186803b1580156112b957600080fd5b505afa1580156112cd573d6000803e3d6000fd5b505050506040513d60208110156112e357600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614151561131657600080fd5b604080519081016040528084815260200183815250600160008681526020019081526020016000206003016000820151816000015560208201518160010155905050837f1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e468484604051808381526020018281526020019250505060405180910390a250505050565b600060016000838152602001908152602001600020600101549050919050565b60006001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b606060016000848152602001908152602001600020600501826040518082805190602001908083835b60208310151561144c5780518252602082019150602081019050602083039250611427565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156115135780601f106114e857610100808354040283529160200191611513565b820191906000526020600020905b8154815290600101906020018083116114f657829003601f168201915b5050505050905092915050565b823373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060206040518083038186803b1580156115c657600080fd5b505afa1580156115da573d6000803e3d6000fd5b505050506040513d60208110156115f057600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614151561162357600080fd5b600083600185031614151561163757600080fd5b816001600086815260200190815260200160002060060160008581526020019081526020016000209080519060200190611672929190611f93565b5082847faa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe360405160405180910390a350505050565b6060600160008381526020019081526020016000206002018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117535780601f1061172857610100808354040283529160200191611753565b820191906000526020600020905b81548152906001019060200180831161173657829003601f168201915b50505050509050919050565b813373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060206040518083038186803b15801561180557600080fd5b505afa158015611819573d6000803e3d6000fd5b505050506040513d602081101561182f57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614151561186257600080fd5b8160016000858152602001908152602001600020600201908051906020019061188c929190611f13565b50827fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f7836040518080602001828103825283818151815260200191508051906020019080838360005b838110156118f05780820151818401526020810190506118d5565b50505050905090810190601f16801561191d5780820380516001836020036101000a031916815260200191505b509250505060405180910390a2505050565b813373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060206040518083038186803b1580156119d557600080fd5b505afa1580156119e9573d6000803e3d6000fd5b505050506040513d60208110156119ff57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16141515611a3257600080fd5b81600160008581526020019081526020016000206007019080519060200190611a5c929190611f93565b50827fc0b0fc07269fc2749adada3221c095a1d2187b2d075b51c915857b520f3a5021836040518080602001828103825283818151815260200191508051906020019080838360005b83811015611ac0578082015181840152602081019050611aa5565b50505050905090810190601f168015611aed5780820380516001836020036101000a031916815260200191505b509250505060405180910390a2505050565b813373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060206040518083038186803b158015611ba557600080fd5b505afa158015611bb9573d6000803e3d6000fd5b505050506040513d6020811015611bcf57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16141515611c0257600080fd5b816001600085815260200190815260200160002060010181905550827f0424b6fe0d9c3bdbece0e7879dc241bb0c22e900be8b6c168b4ee08bd9bf83bc836040518082815260200191505060405180910390a2505050565b6000806001600084815260200190815260200160002060030160000154600160008581526020019081526020016000206003016001015491509150915091565b813373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060206040518083038186803b158015611d4057600080fd5b505afa158015611d54573d6000803e3d6000fd5b505050506040513d6020811015611d6a57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16141515611d9d57600080fd5b816001600085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550827f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd283604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a2505050565b6060600160008381526020019081526020016000206007018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611f075780601f10611edc57610100808354040283529160200191611f07565b820191906000526020600020905b815481529060010190602001808311611eea57829003601f168201915b50505050509050919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611f5457805160ff1916838001178555611f82565b82800160010185558215611f82579182015b82811115611f81578251825591602001919060010190611f66565b5b509050611f8f9190612013565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611fd457805160ff1916838001178555612002565b82800160010185558215612002579182015b82811115612001578251825591602001919060010190611fe6565b5b50905061200f9190612013565b5090565b61203591905b80821115612031576000816000905550600101612019565b5090565b9056fea165627a7a72305820a0929689dec8a1816a3bd3fdf3300b32f5e524e2e05fa877f835d865119c151c0029",
  "deployedBytecode": "0x6080604052600436106100db576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806301ffc9a7146100e057806310f13a8c146101525780632203ab56146102bb57806329cd62ea146103805780632dff6941146103cf5780633b3b57de1461041e57806359d1d43c14610499578063623195b0146105e4578063691f3431146106c05780637737221314610774578063aa4cb54714610846578063c3d014d614610918578063c86902331461095d578063d5fa2b00146109b3578063e89401a114610a0e575b600080fd5b3480156100ec57600080fd5b506101386004803603602081101561010357600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610ac2565b604051808215151515815260200191505060405180910390f35b34801561015e57600080fd5b506102b96004803603606081101561017557600080fd5b81019080803590602001909291908035906020019064010000000081111561019c57600080fd5b8201836020820111156101ae57600080fd5b803590602001918460018302840111640100000000831117156101d057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561023357600080fd5b82018360208201111561024557600080fd5b8035906020019184600183028401116401000000008311171561026757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610e1c565b005b3480156102c757600080fd5b506102fe600480360360408110156102de57600080fd5b8101908080359060200190929190803590602001909291905050506110c3565b6040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610344578082015181840152602081019050610329565b50505050905090810190601f1680156103715780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b34801561038c57600080fd5b506103cd600480360360608110156103a357600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050611213565b005b3480156103db57600080fd5b50610408600480360360208110156103f257600080fd5b810190808035906020019092919050505061139e565b6040518082815260200191505060405180910390f35b34801561042a57600080fd5b506104576004803603602081101561044157600080fd5b81019080803590602001909291905050506113be565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104a557600080fd5b50610569600480360360408110156104bc57600080fd5b8101908080359060200190929190803590602001906401000000008111156104e357600080fd5b8201836020820111156104f557600080fd5b8035906020019184600183028401116401000000008311171561051757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506113fe565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105a957808201518184015260208101905061058e565b50505050905090810190601f1680156105d65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156105f057600080fd5b506106be6004803603606081101561060757600080fd5b8101908080359060200190929190803590602001909291908035906020019064010000000081111561063857600080fd5b82018360208201111561064a57600080fd5b8035906020019184600183028401116401000000008311171561066c57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611520565b005b3480156106cc57600080fd5b506106f9600480360360208110156106e357600080fd5b81019080803590602001909291905050506116a7565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561073957808201518184015260208101905061071e565b50505050905090810190601f1680156107665780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561078057600080fd5b506108446004803603604081101561079757600080fd5b8101908080359060200190929190803590602001906401000000008111156107be57600080fd5b8201836020820111156107d057600080fd5b803590602001918460018302840111640100000000831117156107f257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061175f565b005b34801561085257600080fd5b506109166004803603604081101561086957600080fd5b81019080803590602001909291908035906020019064010000000081111561089057600080fd5b8201836020820111156108a257600080fd5b803590602001918460018302840111640100000000831117156108c457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061192f565b005b34801561092457600080fd5b5061095b6004803603604081101561093b57600080fd5b810190808035906020019092919080359060200190929190505050611aff565b005b34801561096957600080fd5b506109966004803603602081101561098057600080fd5b8101908080359060200190929190505050611c5a565b604051808381526020018281526020019250505060405180910390f35b3480156109bf57600080fd5b50610a0c600480360360408110156109d657600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c9a565b005b348015610a1a57600080fd5b50610a4760048036036020811015610a3157600080fd5b8101908080359060200190929190505050611e5b565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a87578082015181840152602081019050610a6c565b50505050905090810190601f168015610ab45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000633b3b57de7c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b93575063d8389dc57c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610bfe575063691f34317c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610c695750632203ab567c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610cd4575063c86902337c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610d3f57506359d1d43c7c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610daa575063e89401a17c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610e1557506301ffc9a77c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b823373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060206040518083038186803b158015610ec257600080fd5b505afa158015610ed6573d6000803e3d6000fd5b505050506040513d6020811015610eec57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16141515610f1f57600080fd5b8160016000868152602001908152602001600020600501846040518082805190602001908083835b602083101515610f6c5780518252602082019150602081019050602083039250610f47565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390209080519060200190610fb2929190611f13565b50837fd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a75508485604051808060200180602001838103835285818151815260200191508051906020019080838360005b8381101561101b578082015181840152602081019050611000565b50505050905090810190601f1680156110485780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b83811015611081578082015181840152602081019050611066565b50505050905090810190601f1680156110ae5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a250505050565b60006060600060016000868152602001908152602001600020905060006060600191505b85821115156111fe5760008683161415801561112c57506000836006016000848152602001908152602001600020805460018160011615610100020316600290049050115b156111ef578260060160008381526020019081526020016000208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111da5780601f106111af576101008083540402835291602001916111da565b820191906000526020600020905b8154815290600101906020018083116111bd57829003601f168201915b5050505050905081819450945050505061120c565b6001829060020a0291506110e7565b600081819150945094505050505b9250929050565b823373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060206040518083038186803b1580156112b957600080fd5b505afa1580156112cd573d6000803e3d6000fd5b505050506040513d60208110156112e357600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614151561131657600080fd5b604080519081016040528084815260200183815250600160008681526020019081526020016000206003016000820151816000015560208201518160010155905050837f1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e468484604051808381526020018281526020019250505060405180910390a250505050565b600060016000838152602001908152602001600020600101549050919050565b60006001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b606060016000848152602001908152602001600020600501826040518082805190602001908083835b60208310151561144c5780518252602082019150602081019050602083039250611427565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156115135780601f106114e857610100808354040283529160200191611513565b820191906000526020600020905b8154815290600101906020018083116114f657829003601f168201915b5050505050905092915050565b823373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060206040518083038186803b1580156115c657600080fd5b505afa1580156115da573d6000803e3d6000fd5b505050506040513d60208110156115f057600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614151561162357600080fd5b600083600185031614151561163757600080fd5b816001600086815260200190815260200160002060060160008581526020019081526020016000209080519060200190611672929190611f93565b5082847faa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe360405160405180910390a350505050565b6060600160008381526020019081526020016000206002018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117535780601f1061172857610100808354040283529160200191611753565b820191906000526020600020905b81548152906001019060200180831161173657829003601f168201915b50505050509050919050565b813373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060206040518083038186803b15801561180557600080fd5b505afa158015611819573d6000803e3d6000fd5b505050506040513d602081101561182f57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614151561186257600080fd5b8160016000858152602001908152602001600020600201908051906020019061188c929190611f13565b50827fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f7836040518080602001828103825283818151815260200191508051906020019080838360005b838110156118f05780820151818401526020810190506118d5565b50505050905090810190601f16801561191d5780820380516001836020036101000a031916815260200191505b509250505060405180910390a2505050565b813373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060206040518083038186803b1580156119d557600080fd5b505afa1580156119e9573d6000803e3d6000fd5b505050506040513d60208110156119ff57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16141515611a3257600080fd5b81600160008581526020019081526020016000206007019080519060200190611a5c929190611f93565b50827fc0b0fc07269fc2749adada3221c095a1d2187b2d075b51c915857b520f3a5021836040518080602001828103825283818151815260200191508051906020019080838360005b83811015611ac0578082015181840152602081019050611aa5565b50505050905090810190601f168015611aed5780820380516001836020036101000a031916815260200191505b509250505060405180910390a2505050565b813373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060206040518083038186803b158015611ba557600080fd5b505afa158015611bb9573d6000803e3d6000fd5b505050506040513d6020811015611bcf57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16141515611c0257600080fd5b816001600085815260200190815260200160002060010181905550827f0424b6fe0d9c3bdbece0e7879dc241bb0c22e900be8b6c168b4ee08bd9bf83bc836040518082815260200191505060405180910390a2505050565b6000806001600084815260200190815260200160002060030160000154600160008581526020019081526020016000206003016001015491509150915091565b813373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060206040518083038186803b158015611d4057600080fd5b505afa158015611d54573d6000803e3d6000fd5b505050506040513d6020811015611d6a57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16141515611d9d57600080fd5b816001600085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550827f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd283604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a2505050565b6060600160008381526020019081526020016000206007018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611f075780601f10611edc57610100808354040283529160200191611f07565b820191906000526020600020905b815481529060010190602001808311611eea57829003601f168201915b50505050509050919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611f5457805160ff1916838001178555611f82565b82800160010185558215611f82579182015b82811115611f81578251825591602001919060010190611f66565b5b509050611f8f9190612013565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611fd457805160ff1916838001178555612002565b82800160010185558215612002579182015b82811115612001578251825591602001919060010190611fe6565b5b50905061200f9190612013565b5090565b61203591905b80821115612031576000816000905550600101612019565b5090565b9056fea165627a7a72305820a0929689dec8a1816a3bd3fdf3300b32f5e524e2e05fa877f835d865119c151c0029",
  "sourceMap": "146:8267:9:-;;;1598:62;8:9:-1;5:2;;;30:1;27;20:12;5:2;1598:62:9;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1598:62:9;;;;;;;;;;;;;;;;1646:7;1640:3;;:13;;;;;;;;;;;;;;;;;;1598:62;146:8267;;;;;;",
  "deployedSourceMap": "146:8267:9:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7964:447;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7964:447:9;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7964:447:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4698:185;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4698:185:9;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4698:185:9;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;4698:185:9;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4698:185:9;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;4698:185:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;4698:185:9;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;4698:185:9;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4698:185:9;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;4698:185:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;4698:185:9;;;;;;;;;;;;;;;;;;5938:521;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5938:521:9;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5938:521:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;5938:521:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4245:174;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4245:174:9;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4245:174:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7070:106;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7070:106:9;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7070:106:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7613:100;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7613:100:9;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7613:100:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5100:130;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5100:130:9;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5100:130:9;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;5100:130:9;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5100:130:9;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;5100:130:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;5100:130:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;5100:130:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3664:304;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3664:304:9;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3664:304:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;3664:304:9;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3664:304:9;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;3664:304:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;3664:304:9;;;;;;;;;;;;;;;;;;6659:106;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6659:106:9;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6659:106:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;6659:106:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3207:155;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3207:155:9;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3207:155:9;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;3207:155:9;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3207:155:9;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;3207:155:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;3207:155:9;;;;;;;;;;;;;;;;;;2793:169;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2793:169:9;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2793:169:9;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;2793:169:9;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2793:169:9;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2793:169:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;2793:169:9;;;;;;;;;;;;;;;;;;2406:158;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2406:158:9;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2406:158:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5472:145;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5472:145:9;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5472:145:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1886:149;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1886:149:9;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1886:149:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7339:115;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7339:115:9;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7339:115:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;7339:115:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7964:447;8032:4;265:10;8070:17;;8055:32;;;:11;:32;;;;:79;;;;320:10;8114:20;;8099:35;;;:11;:35;;;;8055:79;:123;;;;372:10;8161:17;;8146:32;;;:11;:32;;;;8055:123;:166;;;;423:10;8205:16;;8190:31;;;:11;:31;;;;8055:166;:212;;;;477:10;8248:19;;8233:34;;;:11;:34;;;;8055:212;:256;;;;529:10;8294:17;;8279:32;;;:11;:32;;;;8055:256;:305;;;;586:10;8338:22;;8323:37;;;:11;:37;;;;8055:305;:349;;;;213:10;8387:17;;8372:32;;;:11;:32;;;;8055:349;8048:356;;7964:447;;;:::o;4698:185::-;4787:4;1477:10;1458:29;;:3;;;;;;;;;;;:9;;;1468:4;1458:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1458:15:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1458:15:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1458:15:9;;;;;;;;;;;;;;;;:29;;;1450:38;;;;;;;;4829:5;4803:7;:13;4811:4;4803:13;;;;;;;;;;;:18;;4822:3;4803:23;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4803:23:9;;;;;;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;:::i;:::-;;4861:4;4849:27;4867:3;4872;4849:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4849:27:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4849:27:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4698:185;;;;:::o;5938:521::-;6008:7;6017:12;6041:21;6065:7;:13;6073:4;6065:13;;;;;;;;;;;6041:37;;6089:19;6118:17;6165:1;6151:15;;6146:280;6183:12;6168:11;:27;;6146:280;;;6266:1;6249:12;6235:11;:26;6234:33;;:72;;;;;6305:1;6271:6;:11;;:24;6283:11;6271:24;;;;;;;;;;;:31;;;;;;;;;;;;;;;;:35;6234:72;6230:186;;;6333:6;:11;;:24;6345:11;6333:24;;;;;;;;;;;6326:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6383:11;6396:4;6375:26;;;;;;;;;6230:186;6213:1;6197:17;;;;;;;6146:280;;;6444:1;6447:4;6436:16;;;;;;;;;;5938:521;;;;;;:::o;4245:174::-;4318:4;1477:10;1458:29;;:3;;;;;;;;;;;:9;;;1468:4;1458:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1458:15:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1458:15:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1458:15:9;;;;;;;;;;;;;;;;:29;;;1450:38;;;;;;;;4357:15;;;;;;;;;4367:1;4357:15;;;;4370:1;4357:15;;;4334:7;:13;4342:4;4334:13;;;;;;;;;;;:20;;:38;;;;;;;;;;;;;;;;;;;4401:4;4387:25;4407:1;4410;4387:25;;;;;;;;;;;;;;;;;;;;;;;;4245:174;;;;:::o;7070:106::-;7122:7;7148;:13;7156:4;7148:13;;;;;;;;;;;:21;;;7141:28;;7070:106;;;:::o;7613:100::-;7662:7;7688;:13;7696:4;7688:13;;;;;;;;;;;:18;;;;;;;;;;;;7681:25;;7613:100;;;:::o;5100:130::-;5168:13;5200:7;:13;5208:4;5200:13;;;;;;;;;;;:18;;5219:3;5200:23;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;5200:23:9;;;;;;;;;;;;;;;;;;;;;5193:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5100:130;;;;:::o;3664:304::-;3752:4;1477:10;1458:29;;:3;;;;;;;;;;;:9;;;1468:4;1458:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1458:15:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1458:15:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1458:15:9;;;;;;;;;;;;;;;;:29;;;1450:38;;;;;;;;3858:1;3842:11;3837:1;3823:11;:15;3822:31;3821:38;3813:47;;;;;;;;3913:4;3879:7;:13;3887:4;3879:13;;;;;;;;;;;:18;;:31;3898:11;3879:31;;;;;;;;;;;:38;;;;;;;;;;;;:::i;:::-;;3949:11;3943:4;3932:29;;;;;;;;;;3664:304;;;;:::o;6659:106::-;6708:13;6740:7;:13;6748:4;6740:13;;;;;;;;;;;:18;;6733:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6659:106;;;:::o;3207:155::-;3276:4;1477:10;1458:29;;:3;;;;;;;;;;;:9;;;1468:4;1458:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1458:15:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1458:15:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1458:15:9;;;;;;;;;;;;;;;;:29;;;1450:38;;;;;;;;3313:4;3292:7;:13;3300:4;3292:13;;;;;;;;;;;:18;;:25;;;;;;;;;;;;:::i;:::-;;3344:4;3332:23;3350:4;3332:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3332:23:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3207:155;;;:::o;2793:169::-;2866:4;1477:10;1458:29;;:3;;;;;;;;;;;:9;;;1468:4;1458:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1458:15:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1458:15:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1458:15:9;;;;;;;;;;;;;;;;:29;;;1450:38;;;;;;;;2908:4;2882:7;:13;2890:4;2882:13;;;;;;;;;;;:23;;:30;;;;;;;;;;;;:::i;:::-;;2944:4;2927:28;2950:4;2927:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2927:28:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2793:169;;;:::o;2406:158::-;2472:4;1477:10;1458:29;;:3;;;;;;;;;;;:9;;;1468:4;1458:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1458:15:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1458:15:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1458:15:9;;;;;;;;;;;;;;;;:29;;;1450:38;;;;;;;;2512:4;2488:7;:13;2496:4;2488:13;;;;;;;;;;;:21;;:28;;;;2546:4;2531:26;2552:4;2531:26;;;;;;;;;;;;;;;;;;2406:158;;;:::o;5472:145::-;5523:9;5534;5563:7;:13;5571:4;5563:13;;;;;;;;;;;:20;;:22;;;5587:7;:13;5595:4;5587:13;;;;;;;;;;;:20;;:22;;;5555:55;;;;5472:145;;;:::o;1886:149::-;1949:4;1477:10;1458:29;;:3;;;;;;;;;;;:9;;;1468:4;1458:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1458:15:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1458:15:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1458:15:9;;;;;;;;;;;;;;;;:29;;;1450:38;;;;;;;;1986:4;1965:7;:13;1973:4;1965:13;;;;;;;;;;;:18;;;:25;;;;;;;;;;;;;;;;;;2017:4;2005:23;2023:4;2005:23;;;;;;;;;;;;;;;;;;;;;;1886:149;;;:::o;7339:115::-;7393:12;7424:7;:13;7432:4;7424:13;;;;;;;;;;;:23;;7417:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7339:115;;;:::o;146:8267::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o",
  "source": "pragma solidity ^0.5.0;\n\nimport \"./ENS.sol\";\n\n/**\n * A simple resolver anyone can use; only allows the owner of a node to set its\n * address.\n */\ncontract PublicResolver {\n\n    bytes4 constant INTERFACE_META_ID = 0x01ffc9a7;\n    bytes4 constant ADDR_INTERFACE_ID = 0x3b3b57de;\n    bytes4 constant CONTENT_INTERFACE_ID = 0xd8389dc5;\n    bytes4 constant NAME_INTERFACE_ID = 0x691f3431;\n    bytes4 constant ABI_INTERFACE_ID = 0x2203ab56;\n    bytes4 constant PUBKEY_INTERFACE_ID = 0xc8690233;\n    bytes4 constant TEXT_INTERFACE_ID = 0x59d1d43c;\n    bytes4 constant MULTIHASH_INTERFACE_ID = 0xe89401a1;\n\n    event AddrChanged(bytes32 indexed node, address a);\n    event ContentChanged(bytes32 indexed node, bytes32 hash);\n    event NameChanged(bytes32 indexed node, string name);\n    event ABIChanged(bytes32 indexed node, uint256 indexed contentType);\n    event PubkeyChanged(bytes32 indexed node, bytes32 x, bytes32 y);\n    event TextChanged(bytes32 indexed node, string indexedKey, string key);\n    event MultihashChanged(bytes32 indexed node, bytes hash);\n\n    struct PublicKey {\n        bytes32 x;\n        bytes32 y;\n    }\n\n    struct Record {\n        address addr;\n        bytes32 content;\n        string name;\n        PublicKey pubkey;\n        mapping(string=>string) text;\n        mapping(uint256=>bytes) abis;\n        bytes multihash;\n    }\n\n    ENS ens;\n\n    mapping (bytes32 => Record) records;\n\n    modifier only_owner(bytes32 node) {\n        require(ens.owner(node) == msg.sender);\n        _;\n    }\n\n    /**\n     * Constructor.\n     * @param ensAddr The ENS registrar contract.\n     */\n    constructor(ENS ensAddr) public {\n        ens = ensAddr;\n    }\n\n    /**\n     * Sets the address associated with an ENS node.\n     * May only be called by the owner of that node in the ENS registry.\n     * @param node The node to update.\n     * @param addr The address to set.\n     */\n    function setAddr(bytes32 node, address addr) public only_owner(node) {\n        records[node].addr = addr;\n        emit AddrChanged(node, addr);\n    }\n\n    /**\n     * Sets the content hash associated with an ENS node.\n     * May only be called by the owner of that node in the ENS registry.\n     * Note that this resource type is not standardized, and will likely change\n     * in future to a resource type based on multihash.\n     * @param node The node to update.\n     * @param hash The content hash to set\n     */\n    function setContent(bytes32 node, bytes32 hash) public only_owner(node) {\n        records[node].content = hash;\n        emit ContentChanged(node, hash);\n    }\n\n    /**\n     * Sets the multihash associated with an ENS node.\n     * May only be called by the owner of that node in the ENS registry.\n     * @param node The node to update.\n     * @param hash The multihash to set\n     */\n    function setMultihash(bytes32 node, bytes memory hash) public only_owner(node) {\n        records[node].multihash = hash;\n        emit MultihashChanged(node, hash);\n    }\n    \n    /**\n     * Sets the name associated with an ENS node, for reverse records.\n     * May only be called by the owner of that node in the ENS registry.\n     * @param node The node to update.\n     * @param name The name to set.\n     */\n    function setName(bytes32 node, string memory name) public only_owner(node) {\n        records[node].name = name;\n        emit NameChanged(node, name);\n    }\n\n    /**\n     * Sets the ABI associated with an ENS node.\n     * Nodes may have one ABI of each content type. To remove an ABI, set it to\n     * the empty string.\n     * @param node The node to update.\n     * @param contentType The content type of the ABI\n     * @param data The ABI data.\n     */\n    function setABI(bytes32 node, uint256 contentType, bytes memory data) public only_owner(node) {\n        // Content types must be powers of 2\n        require(((contentType - 1) & contentType) == 0);\n        \n        records[node].abis[contentType] = data;\n        emit ABIChanged(node, contentType);\n    }\n    \n    /**\n     * Sets the SECP256k1 public key associated with an ENS node.\n     * @param node The ENS node to query\n     * @param x the X coordinate of the curve point for the public key.\n     * @param y the Y coordinate of the curve point for the public key.\n     */\n    function setPubkey(bytes32 node, bytes32 x, bytes32 y) public only_owner(node) {\n        records[node].pubkey = PublicKey(x, y);\n        emit PubkeyChanged(node, x, y);\n    }\n\n    /**\n     * Sets the text data associated with an ENS node and key.\n     * May only be called by the owner of that node in the ENS registry.\n     * @param node The node to update.\n     * @param key The key to set.\n     * @param value The text data value to set.\n     */\n    function setText(bytes32 node, string memory key, string memory value) public only_owner(node) {\n        records[node].text[key] = value;\n        emit TextChanged(node, key, key);\n    }\n\n    /**\n     * Returns the text data associated with an ENS node and key.\n     * @param node The ENS node to query.\n     * @param key The text data key to query.\n     * @return The associated text data.\n     */\n    function text(bytes32 node, string memory key) public view returns (string memory) {\n        return records[node].text[key];\n    }\n\n    /**\n     * Returns the SECP256k1 public key associated with an ENS node.\n     * Defined in EIP 619.\n     * @param node The ENS node to query\n     * @return x, y the X and Y coordinates of the curve point for the public key.\n     */\n    function pubkey(bytes32 node) public view returns (bytes32 x, bytes32 y) {\n        return (records[node].pubkey.x, records[node].pubkey.y);\n    }\n\n    /**\n     * Returns the ABI associated with an ENS node.\n     * Defined in EIP205.\n     * @param node The ENS node to query\n     * @param contentTypes A bitwise OR of the ABI formats accepted by the caller.\n     * @return contentType The content type of the return value\n     * @return data The ABI data\n     */\n    function ABI(bytes32 node, uint256 contentTypes) public view returns (uint256, bytes memory) {\n        Record storage record = records[node];\n\n        uint256 contentType;\n        bytes memory data;\n\n        for (contentType = 1; contentType <= contentTypes; contentType <<= 1) {\n            if ((contentType & contentTypes) != 0 && record.abis[contentType].length > 0) {\n                data = record.abis[contentType];\n                return (contentType, data);\n            }\n        }\n\n        return (0, data);\n    }\n\n    /**\n     * Returns the name associated with an ENS node, for reverse records.\n     * Defined in EIP181.\n     * @param node The ENS node to query.\n     * @return The associated name.\n     */\n    function name(bytes32 node) public view returns (string memory) {\n        return records[node].name;\n    }\n\n    /**\n     * Returns the content hash associated with an ENS node.\n     * Note that this resource type is not standardized, and will likely change\n     * in future to a resource type based on multihash.\n     * @param node The ENS node to query.\n     * @return The associated content hash.\n     */\n    function content(bytes32 node) public view returns (bytes32) {\n        return records[node].content;\n    }\n\n    /**\n     * Returns the multihash associated with an ENS node.\n     * @param node The ENS node to query.\n     * @return The associated multihash.\n     */\n    function multihash(bytes32 node) public view returns (bytes memory) {\n        return records[node].multihash;\n    }\n\n    /**\n     * Returns the address associated with an ENS node.\n     * @param node The ENS node to query.\n     * @return The associated address.\n     */\n    function addr(bytes32 node) public view returns (address) {\n        return records[node].addr;\n    }\n\n    /**\n     * Returns true if the resolver implements the interface specified by the provided hash.\n     * @param interfaceID The ID of the interface to check for.\n     * @return True if the contract implements the requested interface.\n     */\n    function supportsInterface(bytes4 interfaceID) public pure returns (bool) {\n        return interfaceID == ADDR_INTERFACE_ID ||\n        interfaceID == CONTENT_INTERFACE_ID ||\n        interfaceID == NAME_INTERFACE_ID ||\n        interfaceID == ABI_INTERFACE_ID ||\n        interfaceID == PUBKEY_INTERFACE_ID ||\n        interfaceID == TEXT_INTERFACE_ID ||\n        interfaceID == MULTIHASH_INTERFACE_ID ||\n        interfaceID == INTERFACE_META_ID;\n    }\n}\n",
  "sourcePath": "/Users/deaneigenmann/Documents/ens/contracts/PublicResolver.sol",
  "ast": {
    "absolutePath": "/Users/deaneigenmann/Documents/ens/contracts/PublicResolver.sol",
    "exportedSymbols": {
      "PublicResolver": [
        2851
      ]
    },
    "id": 2852,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 2336,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:9"
      },
      {
        "absolutePath": "/Users/deaneigenmann/Documents/ens/contracts/ENS.sol",
        "file": "./ENS.sol",
        "id": 2337,
        "nodeType": "ImportDirective",
        "scope": 2852,
        "sourceUnit": 532,
        "src": "25:19:9",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": "A simple resolver anyone can use; only allows the owner of a node to set its\naddress.",
        "fullyImplemented": true,
        "id": 2851,
        "linearizedBaseContracts": [
          2851
        ],
        "name": "PublicResolver",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 2340,
            "name": "INTERFACE_META_ID",
            "nodeType": "VariableDeclaration",
            "scope": 2851,
            "src": "177:46:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 2338,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "177:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30783031666663396137",
              "id": 2339,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "213:10:9",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_33540519_by_1",
                "typeString": "int_const 33540519"
              },
              "value": "0x01ffc9a7"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 2343,
            "name": "ADDR_INTERFACE_ID",
            "nodeType": "VariableDeclaration",
            "scope": 2851,
            "src": "229:46:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 2341,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "229:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30783362336235376465",
              "id": 2342,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "265:10:9",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_993744862_by_1",
                "typeString": "int_const 993744862"
              },
              "value": "0x3b3b57de"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 2346,
            "name": "CONTENT_INTERFACE_ID",
            "nodeType": "VariableDeclaration",
            "scope": 2851,
            "src": "281:49:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 2344,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "281:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30786438333839646335",
              "id": 2345,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "320:10:9",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_3627589061_by_1",
                "typeString": "int_const 3627589061"
              },
              "value": "0xd8389dc5"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 2349,
            "name": "NAME_INTERFACE_ID",
            "nodeType": "VariableDeclaration",
            "scope": 2851,
            "src": "336:46:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 2347,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "336:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30783639316633343331",
              "id": 2348,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "372:10:9",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1763652657_by_1",
                "typeString": "int_const 1763652657"
              },
              "value": "0x691f3431"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 2352,
            "name": "ABI_INTERFACE_ID",
            "nodeType": "VariableDeclaration",
            "scope": 2851,
            "src": "388:45:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 2350,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "388:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30783232303361623536",
              "id": 2351,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "423:10:9",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_570665814_by_1",
                "typeString": "int_const 570665814"
              },
              "value": "0x2203ab56"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 2355,
            "name": "PUBKEY_INTERFACE_ID",
            "nodeType": "VariableDeclaration",
            "scope": 2851,
            "src": "439:48:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 2353,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "439:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30786338363930323333",
              "id": 2354,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "477:10:9",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_3362325043_by_1",
                "typeString": "int_const 3362325043"
              },
              "value": "0xc8690233"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 2358,
            "name": "TEXT_INTERFACE_ID",
            "nodeType": "VariableDeclaration",
            "scope": 2851,
            "src": "493:46:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 2356,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "493:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30783539643164343363",
              "id": 2357,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "529:10:9",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1506923580_by_1",
                "typeString": "int_const 1506923580"
              },
              "value": "0x59d1d43c"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 2361,
            "name": "MULTIHASH_INTERFACE_ID",
            "nodeType": "VariableDeclaration",
            "scope": 2851,
            "src": "545:51:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 2359,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "545:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30786538393430316131",
              "id": 2360,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "586:10:9",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_3902013857_by_1",
                "typeString": "int_const 3902013857"
              },
              "value": "0xe89401a1"
            },
            "visibility": "internal"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2367,
            "name": "AddrChanged",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2366,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2363,
                  "indexed": true,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2367,
                  "src": "621:20:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2362,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "621:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2365,
                  "indexed": false,
                  "name": "a",
                  "nodeType": "VariableDeclaration",
                  "scope": 2367,
                  "src": "643:9:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2364,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "643:7:9",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "620:33:9"
            },
            "src": "603:51:9"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2373,
            "name": "ContentChanged",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2372,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2369,
                  "indexed": true,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2373,
                  "src": "680:20:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2368,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "680:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2371,
                  "indexed": false,
                  "name": "hash",
                  "nodeType": "VariableDeclaration",
                  "scope": 2373,
                  "src": "702:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2370,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "702:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "679:36:9"
            },
            "src": "659:57:9"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2379,
            "name": "NameChanged",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2378,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2375,
                  "indexed": true,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2379,
                  "src": "739:20:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2374,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "739:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2377,
                  "indexed": false,
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 2379,
                  "src": "761:11:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2376,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "761:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "738:35:9"
            },
            "src": "721:53:9"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2385,
            "name": "ABIChanged",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2384,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2381,
                  "indexed": true,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2385,
                  "src": "796:20:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2380,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "796:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2383,
                  "indexed": true,
                  "name": "contentType",
                  "nodeType": "VariableDeclaration",
                  "scope": 2385,
                  "src": "818:27:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2382,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "818:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "795:51:9"
            },
            "src": "779:68:9"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2393,
            "name": "PubkeyChanged",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2392,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2387,
                  "indexed": true,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2393,
                  "src": "872:20:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2386,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "872:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2389,
                  "indexed": false,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 2393,
                  "src": "894:9:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2388,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "894:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2391,
                  "indexed": false,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 2393,
                  "src": "905:9:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2390,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "905:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "871:44:9"
            },
            "src": "852:64:9"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2401,
            "name": "TextChanged",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2400,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2395,
                  "indexed": true,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2401,
                  "src": "939:20:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2394,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "939:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2397,
                  "indexed": false,
                  "name": "indexedKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 2401,
                  "src": "961:17:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2396,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "961:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2399,
                  "indexed": false,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 2401,
                  "src": "980:10:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2398,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "980:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "938:53:9"
            },
            "src": "921:71:9"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2407,
            "name": "MultihashChanged",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2406,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2403,
                  "indexed": true,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2407,
                  "src": "1020:20:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2402,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1020:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2405,
                  "indexed": false,
                  "name": "hash",
                  "nodeType": "VariableDeclaration",
                  "scope": 2407,
                  "src": "1042:10:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2404,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1042:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1019:34:9"
            },
            "src": "997:57:9"
          },
          {
            "canonicalName": "PublicResolver.PublicKey",
            "id": 2412,
            "members": [
              {
                "constant": false,
                "id": 2409,
                "name": "x",
                "nodeType": "VariableDeclaration",
                "scope": 2412,
                "src": "1087:9:9",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 2408,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "1087:7:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2411,
                "name": "y",
                "nodeType": "VariableDeclaration",
                "scope": 2412,
                "src": "1106:9:9",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 2410,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "1106:7:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "PublicKey",
            "nodeType": "StructDefinition",
            "scope": 2851,
            "src": "1060:62:9",
            "visibility": "public"
          },
          {
            "canonicalName": "PublicResolver.Record",
            "id": 2431,
            "members": [
              {
                "constant": false,
                "id": 2414,
                "name": "addr",
                "nodeType": "VariableDeclaration",
                "scope": 2431,
                "src": "1152:12:9",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 2413,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "1152:7:9",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2416,
                "name": "content",
                "nodeType": "VariableDeclaration",
                "scope": 2431,
                "src": "1174:15:9",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 2415,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "1174:7:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2418,
                "name": "name",
                "nodeType": "VariableDeclaration",
                "scope": 2431,
                "src": "1199:11:9",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                },
                "typeName": {
                  "id": 2417,
                  "name": "string",
                  "nodeType": "ElementaryTypeName",
                  "src": "1199:6:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage_ptr",
                    "typeString": "string"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2420,
                "name": "pubkey",
                "nodeType": "VariableDeclaration",
                "scope": 2431,
                "src": "1220:16:9",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_PublicKey_$2412_storage_ptr",
                  "typeString": "struct PublicResolver.PublicKey"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 2419,
                  "name": "PublicKey",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 2412,
                  "src": "1220:9:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_PublicKey_$2412_storage_ptr",
                    "typeString": "struct PublicResolver.PublicKey"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2424,
                "name": "text",
                "nodeType": "VariableDeclaration",
                "scope": 2431,
                "src": "1246:28:9",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_string_memory_$_t_string_storage_$",
                  "typeString": "mapping(string => string)"
                },
                "typeName": {
                  "id": 2423,
                  "keyType": {
                    "id": 2421,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1254:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1246:23:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_string_memory_$_t_string_storage_$",
                    "typeString": "mapping(string => string)"
                  },
                  "valueType": {
                    "id": 2422,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1262:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2428,
                "name": "abis",
                "nodeType": "VariableDeclaration",
                "scope": 2431,
                "src": "1284:28:9",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes_storage_$",
                  "typeString": "mapping(uint256 => bytes)"
                },
                "typeName": {
                  "id": 2427,
                  "keyType": {
                    "id": 2425,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1292:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1284:23:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes_storage_$",
                    "typeString": "mapping(uint256 => bytes)"
                  },
                  "valueType": {
                    "id": 2426,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1301:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2430,
                "name": "multihash",
                "nodeType": "VariableDeclaration",
                "scope": 2431,
                "src": "1322:15:9",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes_storage_ptr",
                  "typeString": "bytes"
                },
                "typeName": {
                  "id": 2429,
                  "name": "bytes",
                  "nodeType": "ElementaryTypeName",
                  "src": "1322:5:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_storage_ptr",
                    "typeString": "bytes"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Record",
            "nodeType": "StructDefinition",
            "scope": 2851,
            "src": "1128:216:9",
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2433,
            "name": "ens",
            "nodeType": "VariableDeclaration",
            "scope": 2851,
            "src": "1350:7:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_ENS_$531",
              "typeString": "contract ENS"
            },
            "typeName": {
              "contractScope": null,
              "id": 2432,
              "name": "ENS",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 531,
              "src": "1350:3:9",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ENS_$531",
                "typeString": "contract ENS"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 2437,
            "name": "records",
            "nodeType": "VariableDeclaration",
            "scope": 2851,
            "src": "1364:35:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$2431_storage_$",
              "typeString": "mapping(bytes32 => struct PublicResolver.Record)"
            },
            "typeName": {
              "id": 2436,
              "keyType": {
                "id": 2434,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "1373:7:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "1364:27:9",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$2431_storage_$",
                "typeString": "mapping(bytes32 => struct PublicResolver.Record)"
              },
              "valueType": {
                "contractScope": null,
                "id": 2435,
                "name": "Record",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 2431,
                "src": "1384:6:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Record_$2431_storage_ptr",
                  "typeString": "struct PublicResolver.Record"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2452,
              "nodeType": "Block",
              "src": "1440:66:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 2448,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2444,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2439,
                              "src": "1468:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2442,
                              "name": "ens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2433,
                              "src": "1458:3:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ENS_$531",
                                "typeString": "contract ENS"
                              }
                            },
                            "id": 2443,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "owner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 516,
                            "src": "1458:9:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                              "typeString": "function (bytes32) view external returns (address)"
                            }
                          },
                          "id": 2445,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1458:15:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2446,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3335,
                            "src": "1477:3:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 2447,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1477:10:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "1458:29:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2441,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3338,
                        3339
                      ],
                      "referencedDeclaration": 3338,
                      "src": "1450:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2449,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1450:38:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2450,
                  "nodeType": "ExpressionStatement",
                  "src": "1450:38:9"
                },
                {
                  "id": 2451,
                  "nodeType": "PlaceholderStatement",
                  "src": "1498:1:9"
                }
              ]
            },
            "documentation": null,
            "id": 2453,
            "name": "only_owner",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 2440,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2439,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2453,
                  "src": "1426:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2438,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1426:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1425:14:9"
            },
            "src": "1406:100:9",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2462,
              "nodeType": "Block",
              "src": "1630:30:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2460,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2458,
                      "name": "ens",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2433,
                      "src": "1640:3:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ENS_$531",
                        "typeString": "contract ENS"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2459,
                      "name": "ensAddr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2455,
                      "src": "1646:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ENS_$531",
                        "typeString": "contract ENS"
                      }
                    },
                    "src": "1640:13:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ENS_$531",
                      "typeString": "contract ENS"
                    }
                  },
                  "id": 2461,
                  "nodeType": "ExpressionStatement",
                  "src": "1640:13:9"
                }
              ]
            },
            "documentation": "Constructor.\n@param ensAddr The ENS registrar contract.",
            "id": 2463,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2456,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2455,
                  "name": "ensAddr",
                  "nodeType": "VariableDeclaration",
                  "scope": 2463,
                  "src": "1610:11:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ENS_$531",
                    "typeString": "contract ENS"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2454,
                    "name": "ENS",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 531,
                    "src": "1610:3:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ENS_$531",
                      "typeString": "contract ENS"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1609:13:9"
            },
            "returnParameters": {
              "id": 2457,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1630:0:9"
            },
            "scope": 2851,
            "src": "1598:62:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2485,
              "nodeType": "Block",
              "src": "1955:80:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2478,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2473,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2437,
                          "src": "1965:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$2431_storage_$",
                            "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                          }
                        },
                        "id": 2475,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2474,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2465,
                          "src": "1973:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1965:13:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$2431_storage",
                          "typeString": "struct PublicResolver.Record storage ref"
                        }
                      },
                      "id": 2476,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "addr",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2414,
                      "src": "1965:18:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2477,
                      "name": "addr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2467,
                      "src": "1986:4:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "1965:25:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2479,
                  "nodeType": "ExpressionStatement",
                  "src": "1965:25:9"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2481,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2465,
                        "src": "2017:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2482,
                        "name": "addr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2467,
                        "src": "2023:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 2480,
                      "name": "AddrChanged",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2367,
                      "src": "2005:11:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address)"
                      }
                    },
                    "id": 2483,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2005:23:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2484,
                  "nodeType": "EmitStatement",
                  "src": "2000:28:9"
                }
              ]
            },
            "documentation": "Sets the address associated with an ENS node.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param addr The address to set.",
            "id": 2486,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2470,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2465,
                    "src": "1949:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 2471,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2469,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2453,
                  "src": "1938:10:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1938:16:9"
              }
            ],
            "name": "setAddr",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2468,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2465,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2486,
                  "src": "1903:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2464,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1903:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2467,
                  "name": "addr",
                  "nodeType": "VariableDeclaration",
                  "scope": 2486,
                  "src": "1917:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2466,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1917:7:9",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1902:28:9"
            },
            "returnParameters": {
              "id": 2472,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1955:0:9"
            },
            "scope": 2851,
            "src": "1886:149:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2508,
              "nodeType": "Block",
              "src": "2478:86:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2501,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2496,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2437,
                          "src": "2488:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$2431_storage_$",
                            "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                          }
                        },
                        "id": 2498,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2497,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2488,
                          "src": "2496:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2488:13:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$2431_storage",
                          "typeString": "struct PublicResolver.Record storage ref"
                        }
                      },
                      "id": 2499,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "content",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2416,
                      "src": "2488:21:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2500,
                      "name": "hash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2490,
                      "src": "2512:4:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "2488:28:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 2502,
                  "nodeType": "ExpressionStatement",
                  "src": "2488:28:9"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2504,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2488,
                        "src": "2546:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2505,
                        "name": "hash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2490,
                        "src": "2552:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 2503,
                      "name": "ContentChanged",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2373,
                      "src": "2531:14:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32,bytes32)"
                      }
                    },
                    "id": 2506,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2531:26:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2507,
                  "nodeType": "EmitStatement",
                  "src": "2526:31:9"
                }
              ]
            },
            "documentation": "Sets the content hash associated with an ENS node.\nMay only be called by the owner of that node in the ENS registry.\nNote that this resource type is not standardized, and will likely change\nin future to a resource type based on multihash.\n@param node The node to update.\n@param hash The content hash to set",
            "id": 2509,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2493,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2488,
                    "src": "2472:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 2494,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2492,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2453,
                  "src": "2461:10:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2461:16:9"
              }
            ],
            "name": "setContent",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2491,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2488,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2509,
                  "src": "2426:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2487,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2426:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2490,
                  "name": "hash",
                  "nodeType": "VariableDeclaration",
                  "scope": 2509,
                  "src": "2440:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2489,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2440:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2425:28:9"
            },
            "returnParameters": {
              "id": 2495,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2478:0:9"
            },
            "scope": 2851,
            "src": "2406:158:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2531,
              "nodeType": "Block",
              "src": "2872:90:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2524,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2519,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2437,
                          "src": "2882:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$2431_storage_$",
                            "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                          }
                        },
                        "id": 2521,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2520,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2511,
                          "src": "2890:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2882:13:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$2431_storage",
                          "typeString": "struct PublicResolver.Record storage ref"
                        }
                      },
                      "id": 2522,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "multihash",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2430,
                      "src": "2882:23:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage",
                        "typeString": "bytes storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2523,
                      "name": "hash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2513,
                      "src": "2908:4:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "src": "2882:30:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage",
                      "typeString": "bytes storage ref"
                    }
                  },
                  "id": 2525,
                  "nodeType": "ExpressionStatement",
                  "src": "2882:30:9"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2527,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2511,
                        "src": "2944:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2528,
                        "name": "hash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2513,
                        "src": "2950:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 2526,
                      "name": "MultihashChanged",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2407,
                      "src": "2927:16:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes32,bytes memory)"
                      }
                    },
                    "id": 2529,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2927:28:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2530,
                  "nodeType": "EmitStatement",
                  "src": "2922:33:9"
                }
              ]
            },
            "documentation": "Sets the multihash associated with an ENS node.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param hash The multihash to set",
            "id": 2532,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2516,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2511,
                    "src": "2866:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 2517,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2515,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2453,
                  "src": "2855:10:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2855:16:9"
              }
            ],
            "name": "setMultihash",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2514,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2511,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2532,
                  "src": "2815:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2510,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2815:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2513,
                  "name": "hash",
                  "nodeType": "VariableDeclaration",
                  "scope": 2532,
                  "src": "2829:17:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2512,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2829:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2814:33:9"
            },
            "returnParameters": {
              "id": 2518,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2872:0:9"
            },
            "scope": 2851,
            "src": "2793:169:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2554,
              "nodeType": "Block",
              "src": "3282:80:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2547,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2542,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2437,
                          "src": "3292:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$2431_storage_$",
                            "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                          }
                        },
                        "id": 2544,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2543,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2534,
                          "src": "3300:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3292:13:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$2431_storage",
                          "typeString": "struct PublicResolver.Record storage ref"
                        }
                      },
                      "id": 2545,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "name",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2418,
                      "src": "3292:18:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2546,
                      "name": "name",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2536,
                      "src": "3313:4:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "3292:25:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 2548,
                  "nodeType": "ExpressionStatement",
                  "src": "3292:25:9"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2550,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2534,
                        "src": "3344:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2551,
                        "name": "name",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2536,
                        "src": "3350:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 2549,
                      "name": "NameChanged",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2379,
                      "src": "3332:11:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bytes32,string memory)"
                      }
                    },
                    "id": 2552,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3332:23:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2553,
                  "nodeType": "EmitStatement",
                  "src": "3327:28:9"
                }
              ]
            },
            "documentation": "Sets the name associated with an ENS node, for reverse records.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param name The name to set.",
            "id": 2555,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2539,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2534,
                    "src": "3276:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 2540,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2538,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2453,
                  "src": "3265:10:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3265:16:9"
              }
            ],
            "name": "setName",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2537,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2534,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2555,
                  "src": "3224:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2533,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3224:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2536,
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 2555,
                  "src": "3238:18:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2535,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3238:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3223:34:9"
            },
            "returnParameters": {
              "id": 2541,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3282:0:9"
            },
            "scope": 2851,
            "src": "3207:155:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2593,
              "nodeType": "Block",
              "src": "3758:210:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2576,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2573,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 2570,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 2568,
                                      "name": "contentType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2559,
                                      "src": "3823:11:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 2569,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "3837:1:9",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "3823:15:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 2571,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "3822:17:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 2572,
                                "name": "contentType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2559,
                                "src": "3842:11:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3822:31:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 2574,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "3821:33:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 2575,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3858:1:9",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "3821:38:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2567,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3338,
                        3339
                      ],
                      "referencedDeclaration": 3338,
                      "src": "3813:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2577,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3813:47:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2578,
                  "nodeType": "ExpressionStatement",
                  "src": "3813:47:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2586,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2579,
                            "name": "records",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2437,
                            "src": "3879:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$2431_storage_$",
                              "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                            }
                          },
                          "id": 2581,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2580,
                            "name": "node",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2557,
                            "src": "3887:4:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3879:13:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Record_$2431_storage",
                            "typeString": "struct PublicResolver.Record storage ref"
                          }
                        },
                        "id": 2582,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "abis",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2428,
                        "src": "3879:18:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes_storage_$",
                          "typeString": "mapping(uint256 => bytes storage ref)"
                        }
                      },
                      "id": 2584,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2583,
                        "name": "contentType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2559,
                        "src": "3898:11:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3879:31:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage",
                        "typeString": "bytes storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2585,
                      "name": "data",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2561,
                      "src": "3913:4:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "src": "3879:38:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage",
                      "typeString": "bytes storage ref"
                    }
                  },
                  "id": 2587,
                  "nodeType": "ExpressionStatement",
                  "src": "3879:38:9"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2589,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2557,
                        "src": "3943:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2590,
                        "name": "contentType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2559,
                        "src": "3949:11:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2588,
                      "name": "ABIChanged",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2385,
                      "src": "3932:10:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint256_$returns$__$",
                        "typeString": "function (bytes32,uint256)"
                      }
                    },
                    "id": 2591,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3932:29:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2592,
                  "nodeType": "EmitStatement",
                  "src": "3927:34:9"
                }
              ]
            },
            "documentation": "Sets the ABI associated with an ENS node.\nNodes may have one ABI of each content type. To remove an ABI, set it to\nthe empty string.\n@param node The node to update.\n@param contentType The content type of the ABI\n@param data The ABI data.",
            "id": 2594,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2564,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2557,
                    "src": "3752:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 2565,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2563,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2453,
                  "src": "3741:10:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3741:16:9"
              }
            ],
            "name": "setABI",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2562,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2557,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2594,
                  "src": "3680:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2556,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3680:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2559,
                  "name": "contentType",
                  "nodeType": "VariableDeclaration",
                  "scope": 2594,
                  "src": "3694:19:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2558,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3694:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2561,
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "scope": 2594,
                  "src": "3715:17:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2560,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3715:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3679:54:9"
            },
            "returnParameters": {
              "id": 2566,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3758:0:9"
            },
            "scope": 2851,
            "src": "3664:304:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2622,
              "nodeType": "Block",
              "src": "4324:95:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2614,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2606,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2437,
                          "src": "4334:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$2431_storage_$",
                            "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                          }
                        },
                        "id": 2608,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2607,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2596,
                          "src": "4342:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4334:13:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$2431_storage",
                          "typeString": "struct PublicResolver.Record storage ref"
                        }
                      },
                      "id": 2609,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "pubkey",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2420,
                      "src": "4334:20:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_PublicKey_$2412_storage",
                        "typeString": "struct PublicResolver.PublicKey storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 2611,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2598,
                          "src": "4367:1:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 2612,
                          "name": "y",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2600,
                          "src": "4370:1:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 2610,
                        "name": "PublicKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2412,
                        "src": "4357:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_PublicKey_$2412_storage_ptr_$",
                          "typeString": "type(struct PublicResolver.PublicKey storage pointer)"
                        }
                      },
                      "id": 2613,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4357:15:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_PublicKey_$2412_memory",
                        "typeString": "struct PublicResolver.PublicKey memory"
                      }
                    },
                    "src": "4334:38:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PublicKey_$2412_storage",
                      "typeString": "struct PublicResolver.PublicKey storage ref"
                    }
                  },
                  "id": 2615,
                  "nodeType": "ExpressionStatement",
                  "src": "4334:38:9"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2617,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2596,
                        "src": "4401:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2618,
                        "name": "x",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2598,
                        "src": "4407:1:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2619,
                        "name": "y",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2600,
                        "src": "4410:1:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 2616,
                      "name": "PubkeyChanged",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2393,
                      "src": "4387:13:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32,bytes32,bytes32)"
                      }
                    },
                    "id": 2620,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4387:25:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2621,
                  "nodeType": "EmitStatement",
                  "src": "4382:30:9"
                }
              ]
            },
            "documentation": "Sets the SECP256k1 public key associated with an ENS node.\n@param node The ENS node to query\n@param x the X coordinate of the curve point for the public key.\n@param y the Y coordinate of the curve point for the public key.",
            "id": 2623,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2603,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2596,
                    "src": "4318:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 2604,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2602,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2453,
                  "src": "4307:10:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4307:16:9"
              }
            ],
            "name": "setPubkey",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2601,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2596,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2623,
                  "src": "4264:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2595,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4264:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2598,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 2623,
                  "src": "4278:9:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2597,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4278:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2600,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 2623,
                  "src": "4289:9:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2599,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4289:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4263:36:9"
            },
            "returnParameters": {
              "id": 2605,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4324:0:9"
            },
            "scope": 2851,
            "src": "4245:174:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2650,
              "nodeType": "Block",
              "src": "4793:90:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2642,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2635,
                            "name": "records",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2437,
                            "src": "4803:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$2431_storage_$",
                              "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                            }
                          },
                          "id": 2637,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2636,
                            "name": "node",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2625,
                            "src": "4811:4:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4803:13:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Record_$2431_storage",
                            "typeString": "struct PublicResolver.Record storage ref"
                          }
                        },
                        "id": 2638,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "text",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2424,
                        "src": "4803:18:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_string_memory_$_t_string_storage_$",
                          "typeString": "mapping(string memory => string storage ref)"
                        }
                      },
                      "id": 2640,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2639,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2627,
                        "src": "4822:3:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "4803:23:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2641,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2629,
                      "src": "4829:5:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "4803:31:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 2643,
                  "nodeType": "ExpressionStatement",
                  "src": "4803:31:9"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2645,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2625,
                        "src": "4861:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2646,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2627,
                        "src": "4867:3:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2647,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2627,
                        "src": "4872:3:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 2644,
                      "name": "TextChanged",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2401,
                      "src": "4849:11:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bytes32,string memory,string memory)"
                      }
                    },
                    "id": 2648,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4849:27:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2649,
                  "nodeType": "EmitStatement",
                  "src": "4844:32:9"
                }
              ]
            },
            "documentation": "Sets the text data associated with an ENS node and key.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param key The key to set.\n@param value The text data value to set.",
            "id": 2651,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2632,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2625,
                    "src": "4787:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 2633,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2631,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2453,
                  "src": "4776:10:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4776:16:9"
              }
            ],
            "name": "setText",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2630,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2625,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2651,
                  "src": "4715:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2624,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4715:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2627,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 2651,
                  "src": "4729:17:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2626,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4729:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2629,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 2651,
                  "src": "4748:19:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2628,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4748:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4714:54:9"
            },
            "returnParameters": {
              "id": 2634,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4793:0:9"
            },
            "scope": 2851,
            "src": "4698:185:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2667,
              "nodeType": "Block",
              "src": "5183:47:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2660,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2437,
                          "src": "5200:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$2431_storage_$",
                            "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                          }
                        },
                        "id": 2662,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2661,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2653,
                          "src": "5208:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "5200:13:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$2431_storage",
                          "typeString": "struct PublicResolver.Record storage ref"
                        }
                      },
                      "id": 2663,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "text",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2424,
                      "src": "5200:18:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_string_memory_$_t_string_storage_$",
                        "typeString": "mapping(string memory => string storage ref)"
                      }
                    },
                    "id": 2665,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2664,
                      "name": "key",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2655,
                      "src": "5219:3:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5200:23:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "functionReturnParameters": 2659,
                  "id": 2666,
                  "nodeType": "Return",
                  "src": "5193:30:9"
                }
              ]
            },
            "documentation": "Returns the text data associated with an ENS node and key.\n@param node The ENS node to query.\n@param key The text data key to query.\n@return The associated text data.",
            "id": 2668,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "text",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2656,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2653,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2668,
                  "src": "5114:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2652,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5114:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2655,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 2668,
                  "src": "5128:17:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2654,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5128:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5113:33:9"
            },
            "returnParameters": {
              "id": 2659,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2658,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2668,
                  "src": "5168:13:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2657,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5168:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5167:15:9"
            },
            "scope": 2851,
            "src": "5100:130:9",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2689,
              "nodeType": "Block",
              "src": "5545:72:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2677,
                              "name": "records",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2437,
                              "src": "5563:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$2431_storage_$",
                                "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                              }
                            },
                            "id": 2679,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2678,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2670,
                              "src": "5571:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "5563:13:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Record_$2431_storage",
                              "typeString": "struct PublicResolver.Record storage ref"
                            }
                          },
                          "id": 2680,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "pubkey",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2420,
                          "src": "5563:20:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PublicKey_$2412_storage",
                            "typeString": "struct PublicResolver.PublicKey storage ref"
                          }
                        },
                        "id": 2681,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "x",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2409,
                        "src": "5563:22:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2682,
                              "name": "records",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2437,
                              "src": "5587:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$2431_storage_$",
                                "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                              }
                            },
                            "id": 2684,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2683,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2670,
                              "src": "5595:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "5587:13:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Record_$2431_storage",
                              "typeString": "struct PublicResolver.Record storage ref"
                            }
                          },
                          "id": 2685,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "pubkey",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2420,
                          "src": "5587:20:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PublicKey_$2412_storage",
                            "typeString": "struct PublicResolver.PublicKey storage ref"
                          }
                        },
                        "id": 2686,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "y",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2411,
                        "src": "5587:22:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "id": 2687,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "5562:48:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes32_$",
                      "typeString": "tuple(bytes32,bytes32)"
                    }
                  },
                  "functionReturnParameters": 2676,
                  "id": 2688,
                  "nodeType": "Return",
                  "src": "5555:55:9"
                }
              ]
            },
            "documentation": "Returns the SECP256k1 public key associated with an ENS node.\nDefined in EIP 619.\n@param node The ENS node to query\n@return x, y the X and Y coordinates of the curve point for the public key.",
            "id": 2690,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "pubkey",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2671,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2670,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2690,
                  "src": "5488:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2669,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5488:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5487:14:9"
            },
            "returnParameters": {
              "id": 2676,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2673,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 2690,
                  "src": "5523:9:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2672,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5523:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2675,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 2690,
                  "src": "5534:9:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2674,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5534:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5522:22:9"
            },
            "scope": 2851,
            "src": "5472:145:9",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2757,
              "nodeType": "Block",
              "src": "6031:428:9",
              "statements": [
                {
                  "assignments": [
                    2702
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2702,
                      "name": "record",
                      "nodeType": "VariableDeclaration",
                      "scope": 2757,
                      "src": "6041:21:9",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Record_$2431_storage_ptr",
                        "typeString": "struct PublicResolver.Record"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2701,
                        "name": "Record",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2431,
                        "src": "6041:6:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$2431_storage_ptr",
                          "typeString": "struct PublicResolver.Record"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2706,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2703,
                      "name": "records",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2437,
                      "src": "6065:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$2431_storage_$",
                        "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                      }
                    },
                    "id": 2705,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2704,
                      "name": "node",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2692,
                      "src": "6073:4:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "6065:13:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Record_$2431_storage",
                      "typeString": "struct PublicResolver.Record storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6041:37:9"
                },
                {
                  "assignments": [
                    2708
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2708,
                      "name": "contentType",
                      "nodeType": "VariableDeclaration",
                      "scope": 2757,
                      "src": "6089:19:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2707,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6089:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2709,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6089:19:9"
                },
                {
                  "assignments": [
                    2711
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2711,
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "scope": 2757,
                      "src": "6118:17:9",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 2710,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "6118:5:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2712,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6118:17:9"
                },
                {
                  "body": {
                    "id": 2751,
                    "nodeType": "Block",
                    "src": "6216:210:9",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 2737,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2729,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2726,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 2724,
                                    "name": "contentType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2708,
                                    "src": "6235:11:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 2725,
                                    "name": "contentTypes",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2694,
                                    "src": "6249:12:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "6235:26:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 2727,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "6234:28:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 2728,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6266:1:9",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "6234:33:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2736,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2730,
                                    "name": "record",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2702,
                                    "src": "6271:6:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Record_$2431_storage_ptr",
                                      "typeString": "struct PublicResolver.Record storage pointer"
                                    }
                                  },
                                  "id": 2731,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "abis",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2428,
                                  "src": "6271:11:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes_storage_$",
                                    "typeString": "mapping(uint256 => bytes storage ref)"
                                  }
                                },
                                "id": 2733,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 2732,
                                  "name": "contentType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2708,
                                  "src": "6283:11:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "6271:24:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                }
                              },
                              "id": 2734,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6271:31:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 2735,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6305:1:9",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "6271:35:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "6234:72:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2750,
                        "nodeType": "IfStatement",
                        "src": "6230:186:9",
                        "trueBody": {
                          "id": 2749,
                          "nodeType": "Block",
                          "src": "6308:108:9",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 2743,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 2738,
                                  "name": "data",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2711,
                                  "src": "6326:4:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2739,
                                      "name": "record",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2702,
                                      "src": "6333:6:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Record_$2431_storage_ptr",
                                        "typeString": "struct PublicResolver.Record storage pointer"
                                      }
                                    },
                                    "id": 2740,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "abis",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2428,
                                    "src": "6333:11:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes_storage_$",
                                      "typeString": "mapping(uint256 => bytes storage ref)"
                                    }
                                  },
                                  "id": 2742,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 2741,
                                    "name": "contentType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2708,
                                    "src": "6345:11:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "6333:24:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_storage",
                                    "typeString": "bytes storage ref"
                                  }
                                },
                                "src": "6326:31:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 2744,
                              "nodeType": "ExpressionStatement",
                              "src": "6326:31:9"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2745,
                                    "name": "contentType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2708,
                                    "src": "6383:11:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2746,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2711,
                                    "src": "6396:4:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "id": 2747,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "6382:19:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_bytes_memory_ptr_$",
                                  "typeString": "tuple(uint256,bytes memory)"
                                }
                              },
                              "functionReturnParameters": 2700,
                              "id": 2748,
                              "nodeType": "Return",
                              "src": "6375:26:9"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2719,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2717,
                      "name": "contentType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2708,
                      "src": "6168:11:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 2718,
                      "name": "contentTypes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2694,
                      "src": "6183:12:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6168:27:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2752,
                  "initializationExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 2715,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 2713,
                        "name": "contentType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2708,
                        "src": "6151:11:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 2714,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6165:1:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "6151:15:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2716,
                    "nodeType": "ExpressionStatement",
                    "src": "6151:15:9"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 2722,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 2720,
                        "name": "contentType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2708,
                        "src": "6197:11:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "<<=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 2721,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6213:1:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "6197:17:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2723,
                    "nodeType": "ExpressionStatement",
                    "src": "6197:17:9"
                  },
                  "nodeType": "ForStatement",
                  "src": "6146:280:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2753,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6444:1:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "argumentTypes": null,
                        "id": 2754,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2711,
                        "src": "6447:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "id": 2755,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "6443:9:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_rational_0_by_1_$_t_bytes_memory_ptr_$",
                      "typeString": "tuple(int_const 0,bytes memory)"
                    }
                  },
                  "functionReturnParameters": 2700,
                  "id": 2756,
                  "nodeType": "Return",
                  "src": "6436:16:9"
                }
              ]
            },
            "documentation": "Returns the ABI associated with an ENS node.\nDefined in EIP205.\n@param node The ENS node to query\n@param contentTypes A bitwise OR of the ABI formats accepted by the caller.\n@return contentType The content type of the return value\n@return data The ABI data",
            "id": 2758,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "ABI",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2695,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2692,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2758,
                  "src": "5951:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2691,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5951:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2694,
                  "name": "contentTypes",
                  "nodeType": "VariableDeclaration",
                  "scope": 2758,
                  "src": "5965:20:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2693,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5965:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5950:36:9"
            },
            "returnParameters": {
              "id": 2700,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2697,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2758,
                  "src": "6008:7:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2696,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6008:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2699,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2758,
                  "src": "6017:12:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2698,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "6017:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6007:23:9"
            },
            "scope": 2851,
            "src": "5938:521:9",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2770,
              "nodeType": "Block",
              "src": "6723:42:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2765,
                        "name": "records",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2437,
                        "src": "6740:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$2431_storage_$",
                          "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                        }
                      },
                      "id": 2767,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2766,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2760,
                        "src": "6748:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "6740:13:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Record_$2431_storage",
                        "typeString": "struct PublicResolver.Record storage ref"
                      }
                    },
                    "id": 2768,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "name",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 2418,
                    "src": "6740:18:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "functionReturnParameters": 2764,
                  "id": 2769,
                  "nodeType": "Return",
                  "src": "6733:25:9"
                }
              ]
            },
            "documentation": "Returns the name associated with an ENS node, for reverse records.\nDefined in EIP181.\n@param node The ENS node to query.\n@return The associated name.",
            "id": 2771,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "name",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2761,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2760,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2771,
                  "src": "6673:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2759,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6673:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6672:14:9"
            },
            "returnParameters": {
              "id": 2764,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2763,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2771,
                  "src": "6708:13:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2762,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6708:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6707:15:9"
            },
            "scope": 2851,
            "src": "6659:106:9",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2783,
              "nodeType": "Block",
              "src": "7131:45:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2778,
                        "name": "records",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2437,
                        "src": "7148:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$2431_storage_$",
                          "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                        }
                      },
                      "id": 2780,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2779,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2773,
                        "src": "7156:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "7148:13:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Record_$2431_storage",
                        "typeString": "struct PublicResolver.Record storage ref"
                      }
                    },
                    "id": 2781,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "content",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 2416,
                    "src": "7148:21:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 2777,
                  "id": 2782,
                  "nodeType": "Return",
                  "src": "7141:28:9"
                }
              ]
            },
            "documentation": "Returns the content hash associated with an ENS node.\nNote that this resource type is not standardized, and will likely change\nin future to a resource type based on multihash.\n@param node The ENS node to query.\n@return The associated content hash.",
            "id": 2784,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "content",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2774,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2773,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2784,
                  "src": "7087:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2772,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7087:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7086:14:9"
            },
            "returnParameters": {
              "id": 2777,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2776,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2784,
                  "src": "7122:7:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2775,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7122:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7121:9:9"
            },
            "scope": 2851,
            "src": "7070:106:9",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2796,
              "nodeType": "Block",
              "src": "7407:47:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2791,
                        "name": "records",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2437,
                        "src": "7424:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$2431_storage_$",
                          "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                        }
                      },
                      "id": 2793,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2792,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2786,
                        "src": "7432:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "7424:13:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Record_$2431_storage",
                        "typeString": "struct PublicResolver.Record storage ref"
                      }
                    },
                    "id": 2794,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "multihash",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 2430,
                    "src": "7424:23:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage",
                      "typeString": "bytes storage ref"
                    }
                  },
                  "functionReturnParameters": 2790,
                  "id": 2795,
                  "nodeType": "Return",
                  "src": "7417:30:9"
                }
              ]
            },
            "documentation": "Returns the multihash associated with an ENS node.\n@param node The ENS node to query.\n@return The associated multihash.",
            "id": 2797,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "multihash",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2787,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2786,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2797,
                  "src": "7358:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2785,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7358:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7357:14:9"
            },
            "returnParameters": {
              "id": 2790,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2789,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2797,
                  "src": "7393:12:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2788,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "7393:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7392:14:9"
            },
            "scope": 2851,
            "src": "7339:115:9",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2809,
              "nodeType": "Block",
              "src": "7671:42:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2804,
                        "name": "records",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2437,
                        "src": "7688:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$2431_storage_$",
                          "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                        }
                      },
                      "id": 2806,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2805,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2799,
                        "src": "7696:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "7688:13:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Record_$2431_storage",
                        "typeString": "struct PublicResolver.Record storage ref"
                      }
                    },
                    "id": 2807,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "addr",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 2414,
                    "src": "7688:18:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 2803,
                  "id": 2808,
                  "nodeType": "Return",
                  "src": "7681:25:9"
                }
              ]
            },
            "documentation": "Returns the address associated with an ENS node.\n@param node The ENS node to query.\n@return The associated address.",
            "id": 2810,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "addr",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2800,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2799,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2810,
                  "src": "7627:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2798,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7627:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7626:14:9"
            },
            "returnParameters": {
              "id": 2803,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2802,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2810,
                  "src": "7662:7:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2801,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7662:7:9",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7661:9:9"
            },
            "scope": 2851,
            "src": "7613:100:9",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2849,
              "nodeType": "Block",
              "src": "8038:373:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 2847,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "id": 2843,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 2839,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 2835,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 2831,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 2827,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 2823,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  "id": 2819,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 2817,
                                    "name": "interfaceID",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2812,
                                    "src": "8055:11:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 2818,
                                    "name": "ADDR_INTERFACE_ID",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2343,
                                    "src": "8070:17:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "src": "8055:32:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "||",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  "id": 2822,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 2820,
                                    "name": "interfaceID",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2812,
                                    "src": "8099:11:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 2821,
                                    "name": "CONTENT_INTERFACE_ID",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2346,
                                    "src": "8114:20:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "src": "8099:35:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "8055:79:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                },
                                "id": 2826,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2824,
                                  "name": "interfaceID",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2812,
                                  "src": "8146:11:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 2825,
                                  "name": "NAME_INTERFACE_ID",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2349,
                                  "src": "8161:17:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "src": "8146:32:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "8055:123:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "||",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              "id": 2830,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 2828,
                                "name": "interfaceID",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2812,
                                "src": "8190:11:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 2829,
                                "name": "ABI_INTERFACE_ID",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2352,
                                "src": "8205:16:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "src": "8190:31:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "8055:166:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 2834,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2832,
                              "name": "interfaceID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2812,
                              "src": "8233:11:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 2833,
                              "name": "PUBKEY_INTERFACE_ID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2355,
                              "src": "8248:19:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "8233:34:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "8055:212:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          },
                          "id": 2838,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2836,
                            "name": "interfaceID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2812,
                            "src": "8279:11:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 2837,
                            "name": "TEXT_INTERFACE_ID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2358,
                            "src": "8294:17:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "8279:32:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "8055:256:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "||",
                      "rightExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "id": 2842,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 2840,
                          "name": "interfaceID",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2812,
                          "src": "8323:11:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2841,
                          "name": "MULTIHASH_INTERFACE_ID",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2361,
                          "src": "8338:22:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "src": "8323:37:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "8055:305:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      },
                      "id": 2846,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 2844,
                        "name": "interfaceID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2812,
                        "src": "8372:11:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 2845,
                        "name": "INTERFACE_META_ID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2340,
                        "src": "8387:17:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "src": "8372:32:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "8055:349:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 2816,
                  "id": 2848,
                  "nodeType": "Return",
                  "src": "8048:356:9"
                }
              ]
            },
            "documentation": "Returns true if the resolver implements the interface specified by the provided hash.\n@param interfaceID The ID of the interface to check for.\n@return True if the contract implements the requested interface.",
            "id": 2850,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "supportsInterface",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2813,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2812,
                  "name": "interfaceID",
                  "nodeType": "VariableDeclaration",
                  "scope": 2850,
                  "src": "7991:18:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 2811,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "7991:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7990:20:9"
            },
            "returnParameters": {
              "id": 2816,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2815,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2850,
                  "src": "8032:4:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2814,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "8032:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8031:6:9"
            },
            "scope": 2851,
            "src": "7964:447:9",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 2852,
        "src": "146:8267:9"
      }
    ],
    "src": "0:8414:9"
  },
  "legacyAST": {
    "absolutePath": "/Users/deaneigenmann/Documents/ens/contracts/PublicResolver.sol",
    "exportedSymbols": {
      "PublicResolver": [
        2851
      ]
    },
    "id": 2852,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 2336,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:9"
      },
      {
        "absolutePath": "/Users/deaneigenmann/Documents/ens/contracts/ENS.sol",
        "file": "./ENS.sol",
        "id": 2337,
        "nodeType": "ImportDirective",
        "scope": 2852,
        "sourceUnit": 532,
        "src": "25:19:9",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": "A simple resolver anyone can use; only allows the owner of a node to set its\naddress.",
        "fullyImplemented": true,
        "id": 2851,
        "linearizedBaseContracts": [
          2851
        ],
        "name": "PublicResolver",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 2340,
            "name": "INTERFACE_META_ID",
            "nodeType": "VariableDeclaration",
            "scope": 2851,
            "src": "177:46:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 2338,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "177:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30783031666663396137",
              "id": 2339,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "213:10:9",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_33540519_by_1",
                "typeString": "int_const 33540519"
              },
              "value": "0x01ffc9a7"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 2343,
            "name": "ADDR_INTERFACE_ID",
            "nodeType": "VariableDeclaration",
            "scope": 2851,
            "src": "229:46:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 2341,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "229:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30783362336235376465",
              "id": 2342,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "265:10:9",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_993744862_by_1",
                "typeString": "int_const 993744862"
              },
              "value": "0x3b3b57de"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 2346,
            "name": "CONTENT_INTERFACE_ID",
            "nodeType": "VariableDeclaration",
            "scope": 2851,
            "src": "281:49:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 2344,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "281:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30786438333839646335",
              "id": 2345,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "320:10:9",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_3627589061_by_1",
                "typeString": "int_const 3627589061"
              },
              "value": "0xd8389dc5"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 2349,
            "name": "NAME_INTERFACE_ID",
            "nodeType": "VariableDeclaration",
            "scope": 2851,
            "src": "336:46:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 2347,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "336:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30783639316633343331",
              "id": 2348,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "372:10:9",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1763652657_by_1",
                "typeString": "int_const 1763652657"
              },
              "value": "0x691f3431"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 2352,
            "name": "ABI_INTERFACE_ID",
            "nodeType": "VariableDeclaration",
            "scope": 2851,
            "src": "388:45:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 2350,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "388:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30783232303361623536",
              "id": 2351,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "423:10:9",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_570665814_by_1",
                "typeString": "int_const 570665814"
              },
              "value": "0x2203ab56"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 2355,
            "name": "PUBKEY_INTERFACE_ID",
            "nodeType": "VariableDeclaration",
            "scope": 2851,
            "src": "439:48:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 2353,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "439:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30786338363930323333",
              "id": 2354,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "477:10:9",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_3362325043_by_1",
                "typeString": "int_const 3362325043"
              },
              "value": "0xc8690233"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 2358,
            "name": "TEXT_INTERFACE_ID",
            "nodeType": "VariableDeclaration",
            "scope": 2851,
            "src": "493:46:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 2356,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "493:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30783539643164343363",
              "id": 2357,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "529:10:9",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1506923580_by_1",
                "typeString": "int_const 1506923580"
              },
              "value": "0x59d1d43c"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 2361,
            "name": "MULTIHASH_INTERFACE_ID",
            "nodeType": "VariableDeclaration",
            "scope": 2851,
            "src": "545:51:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 2359,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "545:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30786538393430316131",
              "id": 2360,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "586:10:9",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_3902013857_by_1",
                "typeString": "int_const 3902013857"
              },
              "value": "0xe89401a1"
            },
            "visibility": "internal"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2367,
            "name": "AddrChanged",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2366,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2363,
                  "indexed": true,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2367,
                  "src": "621:20:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2362,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "621:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2365,
                  "indexed": false,
                  "name": "a",
                  "nodeType": "VariableDeclaration",
                  "scope": 2367,
                  "src": "643:9:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2364,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "643:7:9",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "620:33:9"
            },
            "src": "603:51:9"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2373,
            "name": "ContentChanged",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2372,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2369,
                  "indexed": true,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2373,
                  "src": "680:20:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2368,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "680:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2371,
                  "indexed": false,
                  "name": "hash",
                  "nodeType": "VariableDeclaration",
                  "scope": 2373,
                  "src": "702:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2370,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "702:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "679:36:9"
            },
            "src": "659:57:9"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2379,
            "name": "NameChanged",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2378,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2375,
                  "indexed": true,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2379,
                  "src": "739:20:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2374,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "739:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2377,
                  "indexed": false,
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 2379,
                  "src": "761:11:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2376,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "761:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "738:35:9"
            },
            "src": "721:53:9"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2385,
            "name": "ABIChanged",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2384,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2381,
                  "indexed": true,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2385,
                  "src": "796:20:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2380,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "796:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2383,
                  "indexed": true,
                  "name": "contentType",
                  "nodeType": "VariableDeclaration",
                  "scope": 2385,
                  "src": "818:27:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2382,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "818:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "795:51:9"
            },
            "src": "779:68:9"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2393,
            "name": "PubkeyChanged",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2392,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2387,
                  "indexed": true,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2393,
                  "src": "872:20:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2386,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "872:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2389,
                  "indexed": false,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 2393,
                  "src": "894:9:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2388,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "894:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2391,
                  "indexed": false,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 2393,
                  "src": "905:9:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2390,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "905:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "871:44:9"
            },
            "src": "852:64:9"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2401,
            "name": "TextChanged",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2400,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2395,
                  "indexed": true,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2401,
                  "src": "939:20:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2394,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "939:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2397,
                  "indexed": false,
                  "name": "indexedKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 2401,
                  "src": "961:17:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2396,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "961:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2399,
                  "indexed": false,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 2401,
                  "src": "980:10:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2398,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "980:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "938:53:9"
            },
            "src": "921:71:9"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2407,
            "name": "MultihashChanged",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2406,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2403,
                  "indexed": true,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2407,
                  "src": "1020:20:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2402,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1020:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2405,
                  "indexed": false,
                  "name": "hash",
                  "nodeType": "VariableDeclaration",
                  "scope": 2407,
                  "src": "1042:10:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2404,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1042:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1019:34:9"
            },
            "src": "997:57:9"
          },
          {
            "canonicalName": "PublicResolver.PublicKey",
            "id": 2412,
            "members": [
              {
                "constant": false,
                "id": 2409,
                "name": "x",
                "nodeType": "VariableDeclaration",
                "scope": 2412,
                "src": "1087:9:9",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 2408,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "1087:7:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2411,
                "name": "y",
                "nodeType": "VariableDeclaration",
                "scope": 2412,
                "src": "1106:9:9",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 2410,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "1106:7:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "PublicKey",
            "nodeType": "StructDefinition",
            "scope": 2851,
            "src": "1060:62:9",
            "visibility": "public"
          },
          {
            "canonicalName": "PublicResolver.Record",
            "id": 2431,
            "members": [
              {
                "constant": false,
                "id": 2414,
                "name": "addr",
                "nodeType": "VariableDeclaration",
                "scope": 2431,
                "src": "1152:12:9",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 2413,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "1152:7:9",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2416,
                "name": "content",
                "nodeType": "VariableDeclaration",
                "scope": 2431,
                "src": "1174:15:9",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 2415,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "1174:7:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2418,
                "name": "name",
                "nodeType": "VariableDeclaration",
                "scope": 2431,
                "src": "1199:11:9",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                },
                "typeName": {
                  "id": 2417,
                  "name": "string",
                  "nodeType": "ElementaryTypeName",
                  "src": "1199:6:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage_ptr",
                    "typeString": "string"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2420,
                "name": "pubkey",
                "nodeType": "VariableDeclaration",
                "scope": 2431,
                "src": "1220:16:9",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_PublicKey_$2412_storage_ptr",
                  "typeString": "struct PublicResolver.PublicKey"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 2419,
                  "name": "PublicKey",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 2412,
                  "src": "1220:9:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_PublicKey_$2412_storage_ptr",
                    "typeString": "struct PublicResolver.PublicKey"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2424,
                "name": "text",
                "nodeType": "VariableDeclaration",
                "scope": 2431,
                "src": "1246:28:9",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_string_memory_$_t_string_storage_$",
                  "typeString": "mapping(string => string)"
                },
                "typeName": {
                  "id": 2423,
                  "keyType": {
                    "id": 2421,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1254:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1246:23:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_string_memory_$_t_string_storage_$",
                    "typeString": "mapping(string => string)"
                  },
                  "valueType": {
                    "id": 2422,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1262:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2428,
                "name": "abis",
                "nodeType": "VariableDeclaration",
                "scope": 2431,
                "src": "1284:28:9",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes_storage_$",
                  "typeString": "mapping(uint256 => bytes)"
                },
                "typeName": {
                  "id": 2427,
                  "keyType": {
                    "id": 2425,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1292:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1284:23:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes_storage_$",
                    "typeString": "mapping(uint256 => bytes)"
                  },
                  "valueType": {
                    "id": 2426,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1301:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2430,
                "name": "multihash",
                "nodeType": "VariableDeclaration",
                "scope": 2431,
                "src": "1322:15:9",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes_storage_ptr",
                  "typeString": "bytes"
                },
                "typeName": {
                  "id": 2429,
                  "name": "bytes",
                  "nodeType": "ElementaryTypeName",
                  "src": "1322:5:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_storage_ptr",
                    "typeString": "bytes"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Record",
            "nodeType": "StructDefinition",
            "scope": 2851,
            "src": "1128:216:9",
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2433,
            "name": "ens",
            "nodeType": "VariableDeclaration",
            "scope": 2851,
            "src": "1350:7:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_ENS_$531",
              "typeString": "contract ENS"
            },
            "typeName": {
              "contractScope": null,
              "id": 2432,
              "name": "ENS",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 531,
              "src": "1350:3:9",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ENS_$531",
                "typeString": "contract ENS"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 2437,
            "name": "records",
            "nodeType": "VariableDeclaration",
            "scope": 2851,
            "src": "1364:35:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$2431_storage_$",
              "typeString": "mapping(bytes32 => struct PublicResolver.Record)"
            },
            "typeName": {
              "id": 2436,
              "keyType": {
                "id": 2434,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "1373:7:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "1364:27:9",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$2431_storage_$",
                "typeString": "mapping(bytes32 => struct PublicResolver.Record)"
              },
              "valueType": {
                "contractScope": null,
                "id": 2435,
                "name": "Record",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 2431,
                "src": "1384:6:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Record_$2431_storage_ptr",
                  "typeString": "struct PublicResolver.Record"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2452,
              "nodeType": "Block",
              "src": "1440:66:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 2448,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2444,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2439,
                              "src": "1468:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2442,
                              "name": "ens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2433,
                              "src": "1458:3:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ENS_$531",
                                "typeString": "contract ENS"
                              }
                            },
                            "id": 2443,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "owner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 516,
                            "src": "1458:9:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                              "typeString": "function (bytes32) view external returns (address)"
                            }
                          },
                          "id": 2445,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1458:15:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2446,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3335,
                            "src": "1477:3:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 2447,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1477:10:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "1458:29:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2441,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3338,
                        3339
                      ],
                      "referencedDeclaration": 3338,
                      "src": "1450:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2449,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1450:38:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2450,
                  "nodeType": "ExpressionStatement",
                  "src": "1450:38:9"
                },
                {
                  "id": 2451,
                  "nodeType": "PlaceholderStatement",
                  "src": "1498:1:9"
                }
              ]
            },
            "documentation": null,
            "id": 2453,
            "name": "only_owner",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 2440,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2439,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2453,
                  "src": "1426:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2438,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1426:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1425:14:9"
            },
            "src": "1406:100:9",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2462,
              "nodeType": "Block",
              "src": "1630:30:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2460,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2458,
                      "name": "ens",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2433,
                      "src": "1640:3:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ENS_$531",
                        "typeString": "contract ENS"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2459,
                      "name": "ensAddr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2455,
                      "src": "1646:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ENS_$531",
                        "typeString": "contract ENS"
                      }
                    },
                    "src": "1640:13:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ENS_$531",
                      "typeString": "contract ENS"
                    }
                  },
                  "id": 2461,
                  "nodeType": "ExpressionStatement",
                  "src": "1640:13:9"
                }
              ]
            },
            "documentation": "Constructor.\n@param ensAddr The ENS registrar contract.",
            "id": 2463,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2456,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2455,
                  "name": "ensAddr",
                  "nodeType": "VariableDeclaration",
                  "scope": 2463,
                  "src": "1610:11:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ENS_$531",
                    "typeString": "contract ENS"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2454,
                    "name": "ENS",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 531,
                    "src": "1610:3:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ENS_$531",
                      "typeString": "contract ENS"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1609:13:9"
            },
            "returnParameters": {
              "id": 2457,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1630:0:9"
            },
            "scope": 2851,
            "src": "1598:62:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2485,
              "nodeType": "Block",
              "src": "1955:80:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2478,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2473,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2437,
                          "src": "1965:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$2431_storage_$",
                            "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                          }
                        },
                        "id": 2475,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2474,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2465,
                          "src": "1973:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1965:13:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$2431_storage",
                          "typeString": "struct PublicResolver.Record storage ref"
                        }
                      },
                      "id": 2476,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "addr",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2414,
                      "src": "1965:18:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2477,
                      "name": "addr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2467,
                      "src": "1986:4:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "1965:25:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2479,
                  "nodeType": "ExpressionStatement",
                  "src": "1965:25:9"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2481,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2465,
                        "src": "2017:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2482,
                        "name": "addr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2467,
                        "src": "2023:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 2480,
                      "name": "AddrChanged",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2367,
                      "src": "2005:11:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address)"
                      }
                    },
                    "id": 2483,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2005:23:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2484,
                  "nodeType": "EmitStatement",
                  "src": "2000:28:9"
                }
              ]
            },
            "documentation": "Sets the address associated with an ENS node.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param addr The address to set.",
            "id": 2486,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2470,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2465,
                    "src": "1949:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 2471,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2469,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2453,
                  "src": "1938:10:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1938:16:9"
              }
            ],
            "name": "setAddr",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2468,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2465,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2486,
                  "src": "1903:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2464,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1903:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2467,
                  "name": "addr",
                  "nodeType": "VariableDeclaration",
                  "scope": 2486,
                  "src": "1917:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2466,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1917:7:9",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1902:28:9"
            },
            "returnParameters": {
              "id": 2472,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1955:0:9"
            },
            "scope": 2851,
            "src": "1886:149:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2508,
              "nodeType": "Block",
              "src": "2478:86:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2501,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2496,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2437,
                          "src": "2488:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$2431_storage_$",
                            "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                          }
                        },
                        "id": 2498,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2497,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2488,
                          "src": "2496:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2488:13:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$2431_storage",
                          "typeString": "struct PublicResolver.Record storage ref"
                        }
                      },
                      "id": 2499,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "content",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2416,
                      "src": "2488:21:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2500,
                      "name": "hash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2490,
                      "src": "2512:4:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "2488:28:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 2502,
                  "nodeType": "ExpressionStatement",
                  "src": "2488:28:9"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2504,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2488,
                        "src": "2546:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2505,
                        "name": "hash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2490,
                        "src": "2552:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 2503,
                      "name": "ContentChanged",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2373,
                      "src": "2531:14:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32,bytes32)"
                      }
                    },
                    "id": 2506,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2531:26:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2507,
                  "nodeType": "EmitStatement",
                  "src": "2526:31:9"
                }
              ]
            },
            "documentation": "Sets the content hash associated with an ENS node.\nMay only be called by the owner of that node in the ENS registry.\nNote that this resource type is not standardized, and will likely change\nin future to a resource type based on multihash.\n@param node The node to update.\n@param hash The content hash to set",
            "id": 2509,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2493,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2488,
                    "src": "2472:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 2494,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2492,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2453,
                  "src": "2461:10:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2461:16:9"
              }
            ],
            "name": "setContent",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2491,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2488,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2509,
                  "src": "2426:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2487,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2426:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2490,
                  "name": "hash",
                  "nodeType": "VariableDeclaration",
                  "scope": 2509,
                  "src": "2440:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2489,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2440:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2425:28:9"
            },
            "returnParameters": {
              "id": 2495,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2478:0:9"
            },
            "scope": 2851,
            "src": "2406:158:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2531,
              "nodeType": "Block",
              "src": "2872:90:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2524,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2519,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2437,
                          "src": "2882:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$2431_storage_$",
                            "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                          }
                        },
                        "id": 2521,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2520,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2511,
                          "src": "2890:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2882:13:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$2431_storage",
                          "typeString": "struct PublicResolver.Record storage ref"
                        }
                      },
                      "id": 2522,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "multihash",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2430,
                      "src": "2882:23:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage",
                        "typeString": "bytes storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2523,
                      "name": "hash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2513,
                      "src": "2908:4:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "src": "2882:30:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage",
                      "typeString": "bytes storage ref"
                    }
                  },
                  "id": 2525,
                  "nodeType": "ExpressionStatement",
                  "src": "2882:30:9"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2527,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2511,
                        "src": "2944:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2528,
                        "name": "hash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2513,
                        "src": "2950:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 2526,
                      "name": "MultihashChanged",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2407,
                      "src": "2927:16:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes32,bytes memory)"
                      }
                    },
                    "id": 2529,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2927:28:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2530,
                  "nodeType": "EmitStatement",
                  "src": "2922:33:9"
                }
              ]
            },
            "documentation": "Sets the multihash associated with an ENS node.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param hash The multihash to set",
            "id": 2532,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2516,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2511,
                    "src": "2866:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 2517,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2515,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2453,
                  "src": "2855:10:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2855:16:9"
              }
            ],
            "name": "setMultihash",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2514,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2511,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2532,
                  "src": "2815:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2510,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2815:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2513,
                  "name": "hash",
                  "nodeType": "VariableDeclaration",
                  "scope": 2532,
                  "src": "2829:17:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2512,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2829:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2814:33:9"
            },
            "returnParameters": {
              "id": 2518,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2872:0:9"
            },
            "scope": 2851,
            "src": "2793:169:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2554,
              "nodeType": "Block",
              "src": "3282:80:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2547,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2542,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2437,
                          "src": "3292:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$2431_storage_$",
                            "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                          }
                        },
                        "id": 2544,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2543,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2534,
                          "src": "3300:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3292:13:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$2431_storage",
                          "typeString": "struct PublicResolver.Record storage ref"
                        }
                      },
                      "id": 2545,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "name",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2418,
                      "src": "3292:18:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2546,
                      "name": "name",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2536,
                      "src": "3313:4:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "3292:25:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 2548,
                  "nodeType": "ExpressionStatement",
                  "src": "3292:25:9"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2550,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2534,
                        "src": "3344:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2551,
                        "name": "name",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2536,
                        "src": "3350:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 2549,
                      "name": "NameChanged",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2379,
                      "src": "3332:11:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bytes32,string memory)"
                      }
                    },
                    "id": 2552,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3332:23:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2553,
                  "nodeType": "EmitStatement",
                  "src": "3327:28:9"
                }
              ]
            },
            "documentation": "Sets the name associated with an ENS node, for reverse records.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param name The name to set.",
            "id": 2555,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2539,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2534,
                    "src": "3276:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 2540,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2538,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2453,
                  "src": "3265:10:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3265:16:9"
              }
            ],
            "name": "setName",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2537,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2534,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2555,
                  "src": "3224:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2533,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3224:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2536,
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 2555,
                  "src": "3238:18:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2535,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3238:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3223:34:9"
            },
            "returnParameters": {
              "id": 2541,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3282:0:9"
            },
            "scope": 2851,
            "src": "3207:155:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2593,
              "nodeType": "Block",
              "src": "3758:210:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2576,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2573,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 2570,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 2568,
                                      "name": "contentType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2559,
                                      "src": "3823:11:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 2569,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "3837:1:9",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "3823:15:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 2571,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "3822:17:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 2572,
                                "name": "contentType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2559,
                                "src": "3842:11:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3822:31:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 2574,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "3821:33:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 2575,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3858:1:9",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "3821:38:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2567,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3338,
                        3339
                      ],
                      "referencedDeclaration": 3338,
                      "src": "3813:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2577,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3813:47:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2578,
                  "nodeType": "ExpressionStatement",
                  "src": "3813:47:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2586,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2579,
                            "name": "records",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2437,
                            "src": "3879:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$2431_storage_$",
                              "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                            }
                          },
                          "id": 2581,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2580,
                            "name": "node",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2557,
                            "src": "3887:4:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3879:13:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Record_$2431_storage",
                            "typeString": "struct PublicResolver.Record storage ref"
                          }
                        },
                        "id": 2582,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "abis",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2428,
                        "src": "3879:18:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes_storage_$",
                          "typeString": "mapping(uint256 => bytes storage ref)"
                        }
                      },
                      "id": 2584,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2583,
                        "name": "contentType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2559,
                        "src": "3898:11:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3879:31:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage",
                        "typeString": "bytes storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2585,
                      "name": "data",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2561,
                      "src": "3913:4:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "src": "3879:38:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage",
                      "typeString": "bytes storage ref"
                    }
                  },
                  "id": 2587,
                  "nodeType": "ExpressionStatement",
                  "src": "3879:38:9"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2589,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2557,
                        "src": "3943:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2590,
                        "name": "contentType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2559,
                        "src": "3949:11:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2588,
                      "name": "ABIChanged",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2385,
                      "src": "3932:10:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint256_$returns$__$",
                        "typeString": "function (bytes32,uint256)"
                      }
                    },
                    "id": 2591,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3932:29:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2592,
                  "nodeType": "EmitStatement",
                  "src": "3927:34:9"
                }
              ]
            },
            "documentation": "Sets the ABI associated with an ENS node.\nNodes may have one ABI of each content type. To remove an ABI, set it to\nthe empty string.\n@param node The node to update.\n@param contentType The content type of the ABI\n@param data The ABI data.",
            "id": 2594,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2564,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2557,
                    "src": "3752:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 2565,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2563,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2453,
                  "src": "3741:10:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3741:16:9"
              }
            ],
            "name": "setABI",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2562,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2557,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2594,
                  "src": "3680:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2556,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3680:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2559,
                  "name": "contentType",
                  "nodeType": "VariableDeclaration",
                  "scope": 2594,
                  "src": "3694:19:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2558,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3694:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2561,
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "scope": 2594,
                  "src": "3715:17:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2560,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3715:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3679:54:9"
            },
            "returnParameters": {
              "id": 2566,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3758:0:9"
            },
            "scope": 2851,
            "src": "3664:304:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2622,
              "nodeType": "Block",
              "src": "4324:95:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2614,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2606,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2437,
                          "src": "4334:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$2431_storage_$",
                            "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                          }
                        },
                        "id": 2608,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2607,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2596,
                          "src": "4342:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4334:13:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$2431_storage",
                          "typeString": "struct PublicResolver.Record storage ref"
                        }
                      },
                      "id": 2609,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "pubkey",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2420,
                      "src": "4334:20:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_PublicKey_$2412_storage",
                        "typeString": "struct PublicResolver.PublicKey storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 2611,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2598,
                          "src": "4367:1:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 2612,
                          "name": "y",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2600,
                          "src": "4370:1:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 2610,
                        "name": "PublicKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2412,
                        "src": "4357:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_PublicKey_$2412_storage_ptr_$",
                          "typeString": "type(struct PublicResolver.PublicKey storage pointer)"
                        }
                      },
                      "id": 2613,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4357:15:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_PublicKey_$2412_memory",
                        "typeString": "struct PublicResolver.PublicKey memory"
                      }
                    },
                    "src": "4334:38:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PublicKey_$2412_storage",
                      "typeString": "struct PublicResolver.PublicKey storage ref"
                    }
                  },
                  "id": 2615,
                  "nodeType": "ExpressionStatement",
                  "src": "4334:38:9"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2617,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2596,
                        "src": "4401:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2618,
                        "name": "x",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2598,
                        "src": "4407:1:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2619,
                        "name": "y",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2600,
                        "src": "4410:1:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 2616,
                      "name": "PubkeyChanged",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2393,
                      "src": "4387:13:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32,bytes32,bytes32)"
                      }
                    },
                    "id": 2620,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4387:25:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2621,
                  "nodeType": "EmitStatement",
                  "src": "4382:30:9"
                }
              ]
            },
            "documentation": "Sets the SECP256k1 public key associated with an ENS node.\n@param node The ENS node to query\n@param x the X coordinate of the curve point for the public key.\n@param y the Y coordinate of the curve point for the public key.",
            "id": 2623,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2603,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2596,
                    "src": "4318:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 2604,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2602,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2453,
                  "src": "4307:10:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4307:16:9"
              }
            ],
            "name": "setPubkey",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2601,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2596,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2623,
                  "src": "4264:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2595,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4264:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2598,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 2623,
                  "src": "4278:9:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2597,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4278:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2600,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 2623,
                  "src": "4289:9:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2599,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4289:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4263:36:9"
            },
            "returnParameters": {
              "id": 2605,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4324:0:9"
            },
            "scope": 2851,
            "src": "4245:174:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2650,
              "nodeType": "Block",
              "src": "4793:90:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2642,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2635,
                            "name": "records",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2437,
                            "src": "4803:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$2431_storage_$",
                              "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                            }
                          },
                          "id": 2637,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2636,
                            "name": "node",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2625,
                            "src": "4811:4:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4803:13:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Record_$2431_storage",
                            "typeString": "struct PublicResolver.Record storage ref"
                          }
                        },
                        "id": 2638,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "text",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2424,
                        "src": "4803:18:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_string_memory_$_t_string_storage_$",
                          "typeString": "mapping(string memory => string storage ref)"
                        }
                      },
                      "id": 2640,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2639,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2627,
                        "src": "4822:3:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "4803:23:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2641,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2629,
                      "src": "4829:5:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "4803:31:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 2643,
                  "nodeType": "ExpressionStatement",
                  "src": "4803:31:9"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2645,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2625,
                        "src": "4861:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2646,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2627,
                        "src": "4867:3:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2647,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2627,
                        "src": "4872:3:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 2644,
                      "name": "TextChanged",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2401,
                      "src": "4849:11:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bytes32,string memory,string memory)"
                      }
                    },
                    "id": 2648,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4849:27:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2649,
                  "nodeType": "EmitStatement",
                  "src": "4844:32:9"
                }
              ]
            },
            "documentation": "Sets the text data associated with an ENS node and key.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param key The key to set.\n@param value The text data value to set.",
            "id": 2651,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2632,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2625,
                    "src": "4787:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 2633,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2631,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2453,
                  "src": "4776:10:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4776:16:9"
              }
            ],
            "name": "setText",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2630,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2625,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2651,
                  "src": "4715:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2624,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4715:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2627,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 2651,
                  "src": "4729:17:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2626,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4729:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2629,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 2651,
                  "src": "4748:19:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2628,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4748:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4714:54:9"
            },
            "returnParameters": {
              "id": 2634,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4793:0:9"
            },
            "scope": 2851,
            "src": "4698:185:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2667,
              "nodeType": "Block",
              "src": "5183:47:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2660,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2437,
                          "src": "5200:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$2431_storage_$",
                            "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                          }
                        },
                        "id": 2662,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2661,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2653,
                          "src": "5208:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "5200:13:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$2431_storage",
                          "typeString": "struct PublicResolver.Record storage ref"
                        }
                      },
                      "id": 2663,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "text",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2424,
                      "src": "5200:18:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_string_memory_$_t_string_storage_$",
                        "typeString": "mapping(string memory => string storage ref)"
                      }
                    },
                    "id": 2665,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2664,
                      "name": "key",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2655,
                      "src": "5219:3:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5200:23:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "functionReturnParameters": 2659,
                  "id": 2666,
                  "nodeType": "Return",
                  "src": "5193:30:9"
                }
              ]
            },
            "documentation": "Returns the text data associated with an ENS node and key.\n@param node The ENS node to query.\n@param key The text data key to query.\n@return The associated text data.",
            "id": 2668,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "text",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2656,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2653,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2668,
                  "src": "5114:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2652,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5114:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2655,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 2668,
                  "src": "5128:17:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2654,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5128:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5113:33:9"
            },
            "returnParameters": {
              "id": 2659,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2658,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2668,
                  "src": "5168:13:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2657,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5168:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5167:15:9"
            },
            "scope": 2851,
            "src": "5100:130:9",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2689,
              "nodeType": "Block",
              "src": "5545:72:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2677,
                              "name": "records",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2437,
                              "src": "5563:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$2431_storage_$",
                                "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                              }
                            },
                            "id": 2679,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2678,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2670,
                              "src": "5571:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "5563:13:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Record_$2431_storage",
                              "typeString": "struct PublicResolver.Record storage ref"
                            }
                          },
                          "id": 2680,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "pubkey",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2420,
                          "src": "5563:20:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PublicKey_$2412_storage",
                            "typeString": "struct PublicResolver.PublicKey storage ref"
                          }
                        },
                        "id": 2681,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "x",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2409,
                        "src": "5563:22:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2682,
                              "name": "records",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2437,
                              "src": "5587:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$2431_storage_$",
                                "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                              }
                            },
                            "id": 2684,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2683,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2670,
                              "src": "5595:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "5587:13:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Record_$2431_storage",
                              "typeString": "struct PublicResolver.Record storage ref"
                            }
                          },
                          "id": 2685,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "pubkey",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2420,
                          "src": "5587:20:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PublicKey_$2412_storage",
                            "typeString": "struct PublicResolver.PublicKey storage ref"
                          }
                        },
                        "id": 2686,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "y",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2411,
                        "src": "5587:22:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "id": 2687,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "5562:48:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes32_$",
                      "typeString": "tuple(bytes32,bytes32)"
                    }
                  },
                  "functionReturnParameters": 2676,
                  "id": 2688,
                  "nodeType": "Return",
                  "src": "5555:55:9"
                }
              ]
            },
            "documentation": "Returns the SECP256k1 public key associated with an ENS node.\nDefined in EIP 619.\n@param node The ENS node to query\n@return x, y the X and Y coordinates of the curve point for the public key.",
            "id": 2690,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "pubkey",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2671,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2670,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2690,
                  "src": "5488:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2669,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5488:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5487:14:9"
            },
            "returnParameters": {
              "id": 2676,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2673,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 2690,
                  "src": "5523:9:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2672,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5523:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2675,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 2690,
                  "src": "5534:9:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2674,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5534:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5522:22:9"
            },
            "scope": 2851,
            "src": "5472:145:9",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2757,
              "nodeType": "Block",
              "src": "6031:428:9",
              "statements": [
                {
                  "assignments": [
                    2702
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2702,
                      "name": "record",
                      "nodeType": "VariableDeclaration",
                      "scope": 2757,
                      "src": "6041:21:9",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Record_$2431_storage_ptr",
                        "typeString": "struct PublicResolver.Record"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2701,
                        "name": "Record",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2431,
                        "src": "6041:6:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$2431_storage_ptr",
                          "typeString": "struct PublicResolver.Record"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2706,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2703,
                      "name": "records",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2437,
                      "src": "6065:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$2431_storage_$",
                        "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                      }
                    },
                    "id": 2705,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2704,
                      "name": "node",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2692,
                      "src": "6073:4:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "6065:13:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Record_$2431_storage",
                      "typeString": "struct PublicResolver.Record storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6041:37:9"
                },
                {
                  "assignments": [
                    2708
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2708,
                      "name": "contentType",
                      "nodeType": "VariableDeclaration",
                      "scope": 2757,
                      "src": "6089:19:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2707,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6089:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2709,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6089:19:9"
                },
                {
                  "assignments": [
                    2711
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2711,
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "scope": 2757,
                      "src": "6118:17:9",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 2710,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "6118:5:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2712,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6118:17:9"
                },
                {
                  "body": {
                    "id": 2751,
                    "nodeType": "Block",
                    "src": "6216:210:9",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 2737,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2729,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2726,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 2724,
                                    "name": "contentType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2708,
                                    "src": "6235:11:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 2725,
                                    "name": "contentTypes",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2694,
                                    "src": "6249:12:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "6235:26:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 2727,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "6234:28:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 2728,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6266:1:9",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "6234:33:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2736,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2730,
                                    "name": "record",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2702,
                                    "src": "6271:6:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Record_$2431_storage_ptr",
                                      "typeString": "struct PublicResolver.Record storage pointer"
                                    }
                                  },
                                  "id": 2731,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "abis",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2428,
                                  "src": "6271:11:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes_storage_$",
                                    "typeString": "mapping(uint256 => bytes storage ref)"
                                  }
                                },
                                "id": 2733,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 2732,
                                  "name": "contentType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2708,
                                  "src": "6283:11:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "6271:24:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                }
                              },
                              "id": 2734,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6271:31:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 2735,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6305:1:9",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "6271:35:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "6234:72:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2750,
                        "nodeType": "IfStatement",
                        "src": "6230:186:9",
                        "trueBody": {
                          "id": 2749,
                          "nodeType": "Block",
                          "src": "6308:108:9",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 2743,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 2738,
                                  "name": "data",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2711,
                                  "src": "6326:4:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2739,
                                      "name": "record",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2702,
                                      "src": "6333:6:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Record_$2431_storage_ptr",
                                        "typeString": "struct PublicResolver.Record storage pointer"
                                      }
                                    },
                                    "id": 2740,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "abis",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2428,
                                    "src": "6333:11:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes_storage_$",
                                      "typeString": "mapping(uint256 => bytes storage ref)"
                                    }
                                  },
                                  "id": 2742,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 2741,
                                    "name": "contentType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2708,
                                    "src": "6345:11:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "6333:24:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_storage",
                                    "typeString": "bytes storage ref"
                                  }
                                },
                                "src": "6326:31:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 2744,
                              "nodeType": "ExpressionStatement",
                              "src": "6326:31:9"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2745,
                                    "name": "contentType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2708,
                                    "src": "6383:11:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2746,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2711,
                                    "src": "6396:4:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "id": 2747,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "6382:19:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_bytes_memory_ptr_$",
                                  "typeString": "tuple(uint256,bytes memory)"
                                }
                              },
                              "functionReturnParameters": 2700,
                              "id": 2748,
                              "nodeType": "Return",
                              "src": "6375:26:9"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2719,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2717,
                      "name": "contentType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2708,
                      "src": "6168:11:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 2718,
                      "name": "contentTypes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2694,
                      "src": "6183:12:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6168:27:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2752,
                  "initializationExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 2715,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 2713,
                        "name": "contentType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2708,
                        "src": "6151:11:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 2714,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6165:1:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "6151:15:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2716,
                    "nodeType": "ExpressionStatement",
                    "src": "6151:15:9"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 2722,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 2720,
                        "name": "contentType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2708,
                        "src": "6197:11:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "<<=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 2721,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6213:1:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "6197:17:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2723,
                    "nodeType": "ExpressionStatement",
                    "src": "6197:17:9"
                  },
                  "nodeType": "ForStatement",
                  "src": "6146:280:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2753,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6444:1:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "argumentTypes": null,
                        "id": 2754,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2711,
                        "src": "6447:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "id": 2755,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "6443:9:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_rational_0_by_1_$_t_bytes_memory_ptr_$",
                      "typeString": "tuple(int_const 0,bytes memory)"
                    }
                  },
                  "functionReturnParameters": 2700,
                  "id": 2756,
                  "nodeType": "Return",
                  "src": "6436:16:9"
                }
              ]
            },
            "documentation": "Returns the ABI associated with an ENS node.\nDefined in EIP205.\n@param node The ENS node to query\n@param contentTypes A bitwise OR of the ABI formats accepted by the caller.\n@return contentType The content type of the return value\n@return data The ABI data",
            "id": 2758,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "ABI",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2695,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2692,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2758,
                  "src": "5951:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2691,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5951:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2694,
                  "name": "contentTypes",
                  "nodeType": "VariableDeclaration",
                  "scope": 2758,
                  "src": "5965:20:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2693,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5965:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5950:36:9"
            },
            "returnParameters": {
              "id": 2700,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2697,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2758,
                  "src": "6008:7:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2696,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6008:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2699,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2758,
                  "src": "6017:12:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2698,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "6017:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6007:23:9"
            },
            "scope": 2851,
            "src": "5938:521:9",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2770,
              "nodeType": "Block",
              "src": "6723:42:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2765,
                        "name": "records",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2437,
                        "src": "6740:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$2431_storage_$",
                          "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                        }
                      },
                      "id": 2767,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2766,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2760,
                        "src": "6748:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "6740:13:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Record_$2431_storage",
                        "typeString": "struct PublicResolver.Record storage ref"
                      }
                    },
                    "id": 2768,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "name",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 2418,
                    "src": "6740:18:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "functionReturnParameters": 2764,
                  "id": 2769,
                  "nodeType": "Return",
                  "src": "6733:25:9"
                }
              ]
            },
            "documentation": "Returns the name associated with an ENS node, for reverse records.\nDefined in EIP181.\n@param node The ENS node to query.\n@return The associated name.",
            "id": 2771,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "name",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2761,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2760,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2771,
                  "src": "6673:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2759,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6673:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6672:14:9"
            },
            "returnParameters": {
              "id": 2764,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2763,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2771,
                  "src": "6708:13:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2762,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6708:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6707:15:9"
            },
            "scope": 2851,
            "src": "6659:106:9",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2783,
              "nodeType": "Block",
              "src": "7131:45:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2778,
                        "name": "records",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2437,
                        "src": "7148:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$2431_storage_$",
                          "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                        }
                      },
                      "id": 2780,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2779,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2773,
                        "src": "7156:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "7148:13:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Record_$2431_storage",
                        "typeString": "struct PublicResolver.Record storage ref"
                      }
                    },
                    "id": 2781,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "content",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 2416,
                    "src": "7148:21:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 2777,
                  "id": 2782,
                  "nodeType": "Return",
                  "src": "7141:28:9"
                }
              ]
            },
            "documentation": "Returns the content hash associated with an ENS node.\nNote that this resource type is not standardized, and will likely change\nin future to a resource type based on multihash.\n@param node The ENS node to query.\n@return The associated content hash.",
            "id": 2784,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "content",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2774,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2773,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2784,
                  "src": "7087:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2772,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7087:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7086:14:9"
            },
            "returnParameters": {
              "id": 2777,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2776,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2784,
                  "src": "7122:7:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2775,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7122:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7121:9:9"
            },
            "scope": 2851,
            "src": "7070:106:9",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2796,
              "nodeType": "Block",
              "src": "7407:47:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2791,
                        "name": "records",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2437,
                        "src": "7424:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$2431_storage_$",
                          "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                        }
                      },
                      "id": 2793,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2792,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2786,
                        "src": "7432:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "7424:13:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Record_$2431_storage",
                        "typeString": "struct PublicResolver.Record storage ref"
                      }
                    },
                    "id": 2794,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "multihash",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 2430,
                    "src": "7424:23:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage",
                      "typeString": "bytes storage ref"
                    }
                  },
                  "functionReturnParameters": 2790,
                  "id": 2795,
                  "nodeType": "Return",
                  "src": "7417:30:9"
                }
              ]
            },
            "documentation": "Returns the multihash associated with an ENS node.\n@param node The ENS node to query.\n@return The associated multihash.",
            "id": 2797,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "multihash",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2787,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2786,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2797,
                  "src": "7358:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2785,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7358:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7357:14:9"
            },
            "returnParameters": {
              "id": 2790,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2789,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2797,
                  "src": "7393:12:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2788,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "7393:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7392:14:9"
            },
            "scope": 2851,
            "src": "7339:115:9",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2809,
              "nodeType": "Block",
              "src": "7671:42:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2804,
                        "name": "records",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2437,
                        "src": "7688:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$2431_storage_$",
                          "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                        }
                      },
                      "id": 2806,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2805,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2799,
                        "src": "7696:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "7688:13:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Record_$2431_storage",
                        "typeString": "struct PublicResolver.Record storage ref"
                      }
                    },
                    "id": 2807,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "addr",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 2414,
                    "src": "7688:18:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 2803,
                  "id": 2808,
                  "nodeType": "Return",
                  "src": "7681:25:9"
                }
              ]
            },
            "documentation": "Returns the address associated with an ENS node.\n@param node The ENS node to query.\n@return The associated address.",
            "id": 2810,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "addr",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2800,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2799,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2810,
                  "src": "7627:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2798,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7627:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7626:14:9"
            },
            "returnParameters": {
              "id": 2803,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2802,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2810,
                  "src": "7662:7:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2801,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7662:7:9",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7661:9:9"
            },
            "scope": 2851,
            "src": "7613:100:9",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2849,
              "nodeType": "Block",
              "src": "8038:373:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 2847,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "id": 2843,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 2839,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 2835,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 2831,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 2827,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 2823,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  "id": 2819,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 2817,
                                    "name": "interfaceID",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2812,
                                    "src": "8055:11:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 2818,
                                    "name": "ADDR_INTERFACE_ID",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2343,
                                    "src": "8070:17:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "src": "8055:32:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "||",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  "id": 2822,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 2820,
                                    "name": "interfaceID",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2812,
                                    "src": "8099:11:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 2821,
                                    "name": "CONTENT_INTERFACE_ID",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2346,
                                    "src": "8114:20:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "src": "8099:35:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "8055:79:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                },
                                "id": 2826,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2824,
                                  "name": "interfaceID",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2812,
                                  "src": "8146:11:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 2825,
                                  "name": "NAME_INTERFACE_ID",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2349,
                                  "src": "8161:17:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "src": "8146:32:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "8055:123:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "||",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              "id": 2830,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 2828,
                                "name": "interfaceID",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2812,
                                "src": "8190:11:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 2829,
                                "name": "ABI_INTERFACE_ID",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2352,
                                "src": "8205:16:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "src": "8190:31:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "8055:166:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 2834,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2832,
                              "name": "interfaceID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2812,
                              "src": "8233:11:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 2833,
                              "name": "PUBKEY_INTERFACE_ID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2355,
                              "src": "8248:19:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "8233:34:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "8055:212:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          },
                          "id": 2838,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2836,
                            "name": "interfaceID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2812,
                            "src": "8279:11:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 2837,
                            "name": "TEXT_INTERFACE_ID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2358,
                            "src": "8294:17:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "8279:32:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "8055:256:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "||",
                      "rightExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "id": 2842,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 2840,
                          "name": "interfaceID",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2812,
                          "src": "8323:11:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2841,
                          "name": "MULTIHASH_INTERFACE_ID",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2361,
                          "src": "8338:22:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "src": "8323:37:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "8055:305:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      },
                      "id": 2846,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 2844,
                        "name": "interfaceID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2812,
                        "src": "8372:11:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 2845,
                        "name": "INTERFACE_META_ID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2340,
                        "src": "8387:17:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "src": "8372:32:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "8055:349:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 2816,
                  "id": 2848,
                  "nodeType": "Return",
                  "src": "8048:356:9"
                }
              ]
            },
            "documentation": "Returns true if the resolver implements the interface specified by the provided hash.\n@param interfaceID The ID of the interface to check for.\n@return True if the contract implements the requested interface.",
            "id": 2850,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "supportsInterface",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2813,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2812,
                  "name": "interfaceID",
                  "nodeType": "VariableDeclaration",
                  "scope": 2850,
                  "src": "7991:18:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 2811,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "7991:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7990:20:9"
            },
            "returnParameters": {
              "id": 2816,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2815,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2850,
                  "src": "8032:4:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2814,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "8032:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8031:6:9"
            },
            "scope": 2851,
            "src": "7964:447:9",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 2852,
        "src": "146:8267:9"
      }
    ],
    "src": "0:8414:9"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.0+commit.1d4f565a.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.0.0",
  "updatedAt": "2018-12-28T11:01:42.580Z",
  "devdoc": {
    "methods": {
      "ABI(bytes32,uint256)": {
        "params": {
          "contentTypes": "A bitwise OR of the ABI formats accepted by the caller.",
          "node": "The ENS node to query"
        },
        "return": "contentType The content type of the return valuedata The ABI data"
      },
      "addr(bytes32)": {
        "params": {
          "node": "The ENS node to query."
        },
        "return": "The associated address."
      },
      "constructor": {
        "params": {
          "ensAddr": "The ENS registrar contract."
        }
      },
      "content(bytes32)": {
        "params": {
          "node": "The ENS node to query."
        },
        "return": "The associated content hash."
      },
      "multihash(bytes32)": {
        "params": {
          "node": "The ENS node to query."
        },
        "return": "The associated multihash."
      },
      "name(bytes32)": {
        "params": {
          "node": "The ENS node to query."
        },
        "return": "The associated name."
      },
      "pubkey(bytes32)": {
        "params": {
          "node": "The ENS node to query"
        },
        "return": "x, y the X and Y coordinates of the curve point for the public key."
      },
      "setABI(bytes32,uint256,bytes)": {
        "params": {
          "contentType": "The content type of the ABI",
          "data": "The ABI data.",
          "node": "The node to update."
        }
      },
      "setAddr(bytes32,address)": {
        "params": {
          "addr": "The address to set.",
          "node": "The node to update."
        }
      },
      "setContent(bytes32,bytes32)": {
        "params": {
          "hash": "The content hash to set",
          "node": "The node to update."
        }
      },
      "setMultihash(bytes32,bytes)": {
        "params": {
          "hash": "The multihash to set",
          "node": "The node to update."
        }
      },
      "setName(bytes32,string)": {
        "params": {
          "name": "The name to set.",
          "node": "The node to update."
        }
      },
      "setPubkey(bytes32,bytes32,bytes32)": {
        "params": {
          "node": "The ENS node to query",
          "x": "the X coordinate of the curve point for the public key.",
          "y": "the Y coordinate of the curve point for the public key."
        }
      },
      "setText(bytes32,string,string)": {
        "params": {
          "key": "The key to set.",
          "node": "The node to update.",
          "value": "The text data value to set."
        }
      },
      "supportsInterface(bytes4)": {
        "params": {
          "interfaceID": "The ID of the interface to check for."
        },
        "return": "True if the contract implements the requested interface."
      },
      "text(bytes32,string)": {
        "params": {
          "key": "The text data key to query.",
          "node": "The ENS node to query."
        },
        "return": "The associated text data."
      }
    }
  },
  "userdoc": {
    "methods": {
      "ABI(bytes32,uint256)": {
        "notice": "Returns the ABI associated with an ENS node. Defined in EIP205."
      },
      "addr(bytes32)": {
        "notice": "Returns the address associated with an ENS node."
      },
      "constructor": "Constructor.",
      "content(bytes32)": {
        "notice": "Returns the content hash associated with an ENS node. Note that this resource type is not standardized, and will likely change in future to a resource type based on multihash."
      },
      "multihash(bytes32)": {
        "notice": "Returns the multihash associated with an ENS node."
      },
      "name(bytes32)": {
        "notice": "Returns the name associated with an ENS node, for reverse records. Defined in EIP181."
      },
      "pubkey(bytes32)": {
        "notice": "Returns the SECP256k1 public key associated with an ENS node. Defined in EIP 619."
      },
      "setABI(bytes32,uint256,bytes)": {
        "notice": "Sets the ABI associated with an ENS node. Nodes may have one ABI of each content type. To remove an ABI, set it to the empty string."
      },
      "setAddr(bytes32,address)": {
        "notice": "Sets the address associated with an ENS node. May only be called by the owner of that node in the ENS registry."
      },
      "setContent(bytes32,bytes32)": {
        "notice": "Sets the content hash associated with an ENS node. May only be called by the owner of that node in the ENS registry. Note that this resource type is not standardized, and will likely change in future to a resource type based on multihash."
      },
      "setMultihash(bytes32,bytes)": {
        "notice": "Sets the multihash associated with an ENS node. May only be called by the owner of that node in the ENS registry."
      },
      "setName(bytes32,string)": {
        "notice": "Sets the name associated with an ENS node, for reverse records. May only be called by the owner of that node in the ENS registry."
      },
      "setPubkey(bytes32,bytes32,bytes32)": {
        "notice": "Sets the SECP256k1 public key associated with an ENS node."
      },
      "setText(bytes32,string,string)": {
        "notice": "Sets the text data associated with an ENS node and key. May only be called by the owner of that node in the ENS registry."
      },
      "supportsInterface(bytes4)": {
        "notice": "Returns true if the resolver implements the interface specified by the provided hash."
      },
      "text(bytes32,string)": {
        "notice": "Returns the text data associated with an ENS node and key."
      }
    },
    "notice": "A simple resolver anyone can use; only allows the owner of a node to set its address."
  }
}