{
  "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": true,
          "name": "indexedKey",
          "type": "string"
        },
        {
          "indexed": false,
          "name": "key",
          "type": "string"
        }
      ],
      "name": "TextChanged",
      "type": "event"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "interfaceID",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        }
      ],
      "name": "addr",
      "outputs": [
        {
          "name": "ret",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        },
        {
          "name": "addr",
          "type": "address"
        }
      ],
      "name": "setAddr",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        }
      ],
      "name": "content",
      "outputs": [
        {
          "name": "ret",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        },
        {
          "name": "hash",
          "type": "bytes32"
        }
      ],
      "name": "setContent",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        }
      ],
      "name": "name",
      "outputs": [
        {
          "name": "ret",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        },
        {
          "name": "name",
          "type": "string"
        }
      ],
      "name": "setName",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        },
        {
          "name": "contentTypes",
          "type": "uint256"
        }
      ],
      "name": "ABI",
      "outputs": [
        {
          "name": "contentType",
          "type": "uint256"
        },
        {
          "name": "data",
          "type": "bytes"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "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": true,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        }
      ],
      "name": "pubkey",
      "outputs": [
        {
          "name": "x",
          "type": "bytes32"
        },
        {
          "name": "y",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "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": true,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        },
        {
          "name": "key",
          "type": "string"
        }
      ],
      "name": "text",
      "outputs": [
        {
          "name": "ret",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "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"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b5060405160208061141e833981016040525160008054600160a060020a03909216600160a060020a03199092169190911790556113cc806100526000396000f3006080604052600436106100c45763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166301ffc9a781146100c957806310f13a8c146101175780632203ab56146101b557806329cd62ea1461024f5780632dff69411461026d5780633b3b57de1461029757806359d1d43c146102d8578063623195b0146103ab578063691f34311461040b5780637737221314610423578063c3d014d614610481578063c86902331461049c578063d5fa2b00146104cd575b600080fd5b3480156100d557600080fd5b506101037fffffffff00000000000000000000000000000000000000000000000000000000600435166104fe565b604080519115158252519081900360200190f35b34801561012357600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526101b395833595369560449491939091019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a9998810197919650918201945092508291508401838280828437509497506107139650505050505050565b005b3480156101c157600080fd5b506101d060043560243561098f565b6040518083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156102135781810151838201526020016101fb565b50505050905090810190601f1680156102405780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b34801561025b57600080fd5b506101b3600435602435604435610a9b565b34801561027957600080fd5b50610285600435610bcb565b60408051918252519081900360200190f35b3480156102a357600080fd5b506102af600435610be1565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156102e457600080fd5b5060408051602060046024803582810135601f8101859004850286018501909652858552610336958335953695604494919390910191908190840183828082843750949750610c099650505050505050565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610370578181015183820152602001610358565b50505050905090810190601f16801561039d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103b757600080fd5b50604080516020600460443581810135601f81018490048402850184019095528484526101b3948235946024803595369594606494920191908190840183828082843750949750610d309650505050505050565b34801561041757600080fd5b50610336600435610e61565b34801561042f57600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526101b3958335953695604494919390910191908190840183828082843750949750610f059650505050505050565b34801561048d57600080fd5b506101b360043560243561108b565b3480156104a857600080fd5b506104b460043561119c565b6040805192835260208301919091528051918290030190f35b3480156104d957600080fd5b506101b360043573ffffffffffffffffffffffffffffffffffffffff602435166111b9565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f3b3b57de00000000000000000000000000000000000000000000000000000000148061059157507fffffffff0000000000000000000000000000000000000000000000000000000082167fd8389dc500000000000000000000000000000000000000000000000000000000145b806105dd57507fffffffff0000000000000000000000000000000000000000000000000000000082167f691f343100000000000000000000000000000000000000000000000000000000145b8061062957507fffffffff0000000000000000000000000000000000000000000000000000000082167f2203ab5600000000000000000000000000000000000000000000000000000000145b8061067557507fffffffff0000000000000000000000000000000000000000000000000000000082167fc869023300000000000000000000000000000000000000000000000000000000145b806106c157507fffffffff0000000000000000000000000000000000000000000000000000000082167f59d1d43c00000000000000000000000000000000000000000000000000000000145b8061070d57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60008054604080517f02571be30000000000000000000000000000000000000000000000000000000081526004810187905290518693339373ffffffffffffffffffffffffffffffffffffffff16926302571be39260248083019360209383900390910190829087803b15801561078957600080fd5b505af115801561079d573d6000803e3d6000fd5b505050506040513d60208110156107b357600080fd5b505173ffffffffffffffffffffffffffffffffffffffff16146107d557600080fd5b6000848152600160209081526040918290209151855185936005019287929182918401908083835b6020831061083a57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016107fd565b51815160209384036101000a6000190180199092169116179052920194855250604051938490038101909320845161087b9591949190910192509050611305565b50826040518082805190602001908083835b602083106108ca57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161088d565b51815160209384036101000a60001901801990921691161790526040805192909401829003822081835289518383015289519096508a95507fd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a7550948a94508392908301919085019080838360005b8381101561094f578181015183820152602001610937565b50505050905090810190601f16801561097c5780820380516001836020036101000a031916815260200191505b509250505060405180910390a350505050565b60008281526001602081905260409091206060905b838311610a8e57828416158015906109dd5750600083815260068201602052604081205460026000196101006001841615020190911604115b15610a8357600083815260068201602090815260409182902080548351601f600260001961010060018616150201909316929092049182018490048402810184019094528084529091830182828015610a775780601f10610a4c57610100808354040283529160200191610a77565b820191906000526020600020905b815481529060010190602001808311610a5a57829003601f168201915b50505050509150610a93565b6002909202916109a4565b600092505b509250929050565b60008054604080517f02571be30000000000000000000000000000000000000000000000000000000081526004810187905290518693339373ffffffffffffffffffffffffffffffffffffffff16926302571be39260248083019360209383900390910190829087803b158015610b1157600080fd5b505af1158015610b25573d6000803e3d6000fd5b505050506040513d6020811015610b3b57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff1614610b5d57600080fd5b604080518082018252848152602080820185815260008881526001835284902092516003840155516004909201919091558151858152908101849052815186927f1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e46928290030190a250505050565b6000908152600160208190526040909120015490565b60009081526001602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b600082815260016020908152604091829020915183516060936005019285929182918401908083835b60208310610c6f57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610c32565b518151600019602094850361010090810a820192831692199390931691909117909252949092019687526040805197889003820188208054601f6002600183161590980290950116959095049283018290048202880182019052818752929450925050830182828015610d235780601f10610cf857610100808354040283529160200191610d23565b820191906000526020600020905b815481529060010190602001808311610d0657829003601f168201915b5050505050905092915050565b60008054604080517f02571be30000000000000000000000000000000000000000000000000000000081526004810187905290518693339373ffffffffffffffffffffffffffffffffffffffff16926302571be39260248083019360209383900390910190829087803b158015610da657600080fd5b505af1158015610dba573d6000803e3d6000fd5b505050506040513d6020811015610dd057600080fd5b505173ffffffffffffffffffffffffffffffffffffffff1614610df257600080fd5b6000198301831615610e0357600080fd5b600084815260016020908152604080832086845260060182529091208351610e2d92850190611305565b50604051839085907faa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe390600090a350505050565b6000818152600160208181526040928390206002908101805485516000199582161561010002959095011691909104601f81018390048302840183019094528383526060939091830182828015610ef95780601f10610ece57610100808354040283529160200191610ef9565b820191906000526020600020905b815481529060010190602001808311610edc57829003601f168201915b50505050509050919050565b60008054604080517f02571be30000000000000000000000000000000000000000000000000000000081526004810186905290518593339373ffffffffffffffffffffffffffffffffffffffff16926302571be39260248083019360209383900390910190829087803b158015610f7b57600080fd5b505af1158015610f8f573d6000803e3d6000fd5b505050506040513d6020811015610fa557600080fd5b505173ffffffffffffffffffffffffffffffffffffffff1614610fc757600080fd5b60008381526001602090815260409091208351610fec92600290920191850190611305565b50604080516020808252845181830152845186937fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f79387939092839283019185019080838360005b8381101561104c578181015183820152602001611034565b50505050905090810190601f1680156110795780820380516001836020036101000a031916815260200191505b509250505060405180910390a2505050565b60008054604080517f02571be30000000000000000000000000000000000000000000000000000000081526004810186905290518593339373ffffffffffffffffffffffffffffffffffffffff16926302571be39260248083019360209383900390910190829087803b15801561110157600080fd5b505af1158015611115573d6000803e3d6000fd5b505050506040513d602081101561112b57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff161461114d57600080fd5b6000838152600160208181526040928390209091018490558151848152915185927f0424b6fe0d9c3bdbece0e7879dc241bb0c22e900be8b6c168b4ee08bd9bf83bc92908290030190a2505050565b600090815260016020526040902060038101546004909101549091565b60008054604080517f02571be30000000000000000000000000000000000000000000000000000000081526004810186905290518593339373ffffffffffffffffffffffffffffffffffffffff16926302571be39260248083019360209383900390910190829087803b15801561122f57600080fd5b505af1158015611243573d6000803e3d6000fd5b505050506040513d602081101561125957600080fd5b505173ffffffffffffffffffffffffffffffffffffffff161461127b57600080fd5b60008381526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86169081179091558251908152915185927f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd292908290030190a2505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061134657805160ff1916838001178555611373565b82800160010185558215611373579182015b82811115611373578251825591602001919060010190611358565b5061137f929150611383565b5090565b61139d91905b8082111561137f5760008155600101611389565b905600a165627a7a72305820df7d55833f78259b412ce17403e205ec2beafbb5aee5b0e81bb3abb97dd313720029",
  "deployedBytecode": "0x6080604052600436106100c45763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166301ffc9a781146100c957806310f13a8c146101175780632203ab56146101b557806329cd62ea1461024f5780632dff69411461026d5780633b3b57de1461029757806359d1d43c146102d8578063623195b0146103ab578063691f34311461040b5780637737221314610423578063c3d014d614610481578063c86902331461049c578063d5fa2b00146104cd575b600080fd5b3480156100d557600080fd5b506101037fffffffff00000000000000000000000000000000000000000000000000000000600435166104fe565b604080519115158252519081900360200190f35b34801561012357600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526101b395833595369560449491939091019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a9998810197919650918201945092508291508401838280828437509497506107139650505050505050565b005b3480156101c157600080fd5b506101d060043560243561098f565b6040518083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156102135781810151838201526020016101fb565b50505050905090810190601f1680156102405780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b34801561025b57600080fd5b506101b3600435602435604435610a9b565b34801561027957600080fd5b50610285600435610bcb565b60408051918252519081900360200190f35b3480156102a357600080fd5b506102af600435610be1565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156102e457600080fd5b5060408051602060046024803582810135601f8101859004850286018501909652858552610336958335953695604494919390910191908190840183828082843750949750610c099650505050505050565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610370578181015183820152602001610358565b50505050905090810190601f16801561039d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103b757600080fd5b50604080516020600460443581810135601f81018490048402850184019095528484526101b3948235946024803595369594606494920191908190840183828082843750949750610d309650505050505050565b34801561041757600080fd5b50610336600435610e61565b34801561042f57600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526101b3958335953695604494919390910191908190840183828082843750949750610f059650505050505050565b34801561048d57600080fd5b506101b360043560243561108b565b3480156104a857600080fd5b506104b460043561119c565b6040805192835260208301919091528051918290030190f35b3480156104d957600080fd5b506101b360043573ffffffffffffffffffffffffffffffffffffffff602435166111b9565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f3b3b57de00000000000000000000000000000000000000000000000000000000148061059157507fffffffff0000000000000000000000000000000000000000000000000000000082167fd8389dc500000000000000000000000000000000000000000000000000000000145b806105dd57507fffffffff0000000000000000000000000000000000000000000000000000000082167f691f343100000000000000000000000000000000000000000000000000000000145b8061062957507fffffffff0000000000000000000000000000000000000000000000000000000082167f2203ab5600000000000000000000000000000000000000000000000000000000145b8061067557507fffffffff0000000000000000000000000000000000000000000000000000000082167fc869023300000000000000000000000000000000000000000000000000000000145b806106c157507fffffffff0000000000000000000000000000000000000000000000000000000082167f59d1d43c00000000000000000000000000000000000000000000000000000000145b8061070d57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60008054604080517f02571be30000000000000000000000000000000000000000000000000000000081526004810187905290518693339373ffffffffffffffffffffffffffffffffffffffff16926302571be39260248083019360209383900390910190829087803b15801561078957600080fd5b505af115801561079d573d6000803e3d6000fd5b505050506040513d60208110156107b357600080fd5b505173ffffffffffffffffffffffffffffffffffffffff16146107d557600080fd5b6000848152600160209081526040918290209151855185936005019287929182918401908083835b6020831061083a57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016107fd565b51815160209384036101000a6000190180199092169116179052920194855250604051938490038101909320845161087b9591949190910192509050611305565b50826040518082805190602001908083835b602083106108ca57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161088d565b51815160209384036101000a60001901801990921691161790526040805192909401829003822081835289518383015289519096508a95507fd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a7550948a94508392908301919085019080838360005b8381101561094f578181015183820152602001610937565b50505050905090810190601f16801561097c5780820380516001836020036101000a031916815260200191505b509250505060405180910390a350505050565b60008281526001602081905260409091206060905b838311610a8e57828416158015906109dd5750600083815260068201602052604081205460026000196101006001841615020190911604115b15610a8357600083815260068201602090815260409182902080548351601f600260001961010060018616150201909316929092049182018490048402810184019094528084529091830182828015610a775780601f10610a4c57610100808354040283529160200191610a77565b820191906000526020600020905b815481529060010190602001808311610a5a57829003601f168201915b50505050509150610a93565b6002909202916109a4565b600092505b509250929050565b60008054604080517f02571be30000000000000000000000000000000000000000000000000000000081526004810187905290518693339373ffffffffffffffffffffffffffffffffffffffff16926302571be39260248083019360209383900390910190829087803b158015610b1157600080fd5b505af1158015610b25573d6000803e3d6000fd5b505050506040513d6020811015610b3b57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff1614610b5d57600080fd5b604080518082018252848152602080820185815260008881526001835284902092516003840155516004909201919091558151858152908101849052815186927f1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e46928290030190a250505050565b6000908152600160208190526040909120015490565b60009081526001602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b600082815260016020908152604091829020915183516060936005019285929182918401908083835b60208310610c6f57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610c32565b518151600019602094850361010090810a820192831692199390931691909117909252949092019687526040805197889003820188208054601f6002600183161590980290950116959095049283018290048202880182019052818752929450925050830182828015610d235780601f10610cf857610100808354040283529160200191610d23565b820191906000526020600020905b815481529060010190602001808311610d0657829003601f168201915b5050505050905092915050565b60008054604080517f02571be30000000000000000000000000000000000000000000000000000000081526004810187905290518693339373ffffffffffffffffffffffffffffffffffffffff16926302571be39260248083019360209383900390910190829087803b158015610da657600080fd5b505af1158015610dba573d6000803e3d6000fd5b505050506040513d6020811015610dd057600080fd5b505173ffffffffffffffffffffffffffffffffffffffff1614610df257600080fd5b6000198301831615610e0357600080fd5b600084815260016020908152604080832086845260060182529091208351610e2d92850190611305565b50604051839085907faa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe390600090a350505050565b6000818152600160208181526040928390206002908101805485516000199582161561010002959095011691909104601f81018390048302840183019094528383526060939091830182828015610ef95780601f10610ece57610100808354040283529160200191610ef9565b820191906000526020600020905b815481529060010190602001808311610edc57829003601f168201915b50505050509050919050565b60008054604080517f02571be30000000000000000000000000000000000000000000000000000000081526004810186905290518593339373ffffffffffffffffffffffffffffffffffffffff16926302571be39260248083019360209383900390910190829087803b158015610f7b57600080fd5b505af1158015610f8f573d6000803e3d6000fd5b505050506040513d6020811015610fa557600080fd5b505173ffffffffffffffffffffffffffffffffffffffff1614610fc757600080fd5b60008381526001602090815260409091208351610fec92600290920191850190611305565b50604080516020808252845181830152845186937fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f79387939092839283019185019080838360005b8381101561104c578181015183820152602001611034565b50505050905090810190601f1680156110795780820380516001836020036101000a031916815260200191505b509250505060405180910390a2505050565b60008054604080517f02571be30000000000000000000000000000000000000000000000000000000081526004810186905290518593339373ffffffffffffffffffffffffffffffffffffffff16926302571be39260248083019360209383900390910190829087803b15801561110157600080fd5b505af1158015611115573d6000803e3d6000fd5b505050506040513d602081101561112b57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff161461114d57600080fd5b6000838152600160208181526040928390209091018490558151848152915185927f0424b6fe0d9c3bdbece0e7879dc241bb0c22e900be8b6c168b4ee08bd9bf83bc92908290030190a2505050565b600090815260016020526040902060038101546004909101549091565b60008054604080517f02571be30000000000000000000000000000000000000000000000000000000081526004810186905290518593339373ffffffffffffffffffffffffffffffffffffffff16926302571be39260248083019360209383900390910190829087803b15801561122f57600080fd5b505af1158015611243573d6000803e3d6000fd5b505050506040513d602081101561125957600080fd5b505173ffffffffffffffffffffffffffffffffffffffff161461127b57600080fd5b60008381526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86169081179091558251908152915185927f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd292908290030190a2505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061134657805160ff1916838001178555611373565b82800160010185558215611373579182015b82811115611373578251825591602001919060010190611358565b5061137f929150611383565b5090565b61139d91905b8082111561137f5760008155600101611389565b905600a165627a7a72305820df7d55833f78259b412ce17403e205ec2beafbb5aee5b0e81bb3abb97dd313720029",
  "sourceMap": "181:7260:10:-;;;1502:75;8:9:-1;5:2;;;30:1;27;20:12;5:2;1502:75:10;;;;;;;;;;;;;1557:3;:13;;-1:-1:-1;;;;;1557:13:10;;;-1:-1:-1;;;;;;1557:13:10;;;;;;;;;181:7260;;;;;;",
  "deployedSourceMap": "181:7260:10:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1828:437;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1828:437:10;;;;;;;;;;;;;;;;;;;;;;;;;7280:159;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;7280:159:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7280:159:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7280:159:10;;;;-1:-1:-1;7280:159:10;-1:-1:-1;7280:159:10;;-1:-1:-1;7280:159:10;;;;;;;;-1:-1:-1;7280:159:10;;-1:-1:-1;7280:159:10;;-1:-1:-1;;;;;;;7280:159:10;;;4816:436;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4816:436:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4816:436:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6506:162;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6506:162:10;;;;;;;;;3192:106;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3192:106:10;;;;;;;;;;;;;;;;;;;;;2424:100;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2424:100:10;;;;;;;;;;;;;;;;;;;;;;;;6885:116;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6885:116:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6885:116:10;;-1:-1:-1;6885:116:10;;-1:-1:-1;;;;;;;6885:116:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;6885:116:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5554:287;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5554:287:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5554:287:10;;-1:-1:-1;5554:287:10;;-1:-1:-1;;;;;;;5554:287:10;4015:99;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4015:99:10;;;;;4359:136;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4359:136:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4359:136:10;;-1:-1:-1;4359:136:10;;-1:-1:-1;;;;;;;4359:136:10;3669:146;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3669:146:10;;;;;;;6087:142;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6087:142:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;2750:137;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2750:137:10;;;;;;;;;1828:437;1893:4;1916:32;;;1931:17;1916:32;;:86;;-1:-1:-1;1967:35:10;;;1982:20;1967:35;1916:86;:137;;;-1:-1:-1;2021:32:10;;;2036:17;2021:32;1916:137;:187;;;-1:-1:-1;2072:31:10;;;2087:16;2072:31;1916:187;:240;;;-1:-1:-1;2122:34:10;;;2137:19;2122:34;1916:240;:291;;;-1:-1:-1;2175:32:10;;;2190:17;2175:32;1916:291;:342;;;-1:-1:-1;2226:32:10;;;2241:17;2226:32;1916:342;1909:349;1828:437;-1:-1:-1;;1828:437:10:o;7280:159::-;1356:3;;;:15;;;;;;;;;;;;;;7348:4;;1375:10;;1356:29;:3;;:9;;:15;;;;;;;;;;;;;;;;:3;:15;;;5:2:-1;;;;30:1;27;20:12;5:2;1356:15:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1356:15:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1356:15:10;:29;;;1352:40;;1387:5;;;1352:40;7364:13;;;;:7;:13;;;;;;;;;:23;;;;7390:5;;7364:18;;;7383:3;;7364:23;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;139:12;;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;7364:23:10;;;;;-1:-1:-1;7364:23:10;;;;;;;;;;;:31;;;;:23;;:31;;;;;-1:-1:-1;7364:31:10;-1:-1:-1;7364:31:10;:::i;:::-;;7423:3;7405:27;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;139:12;;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;7405:27:10;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7417:4:10;;-1:-1:-1;7405:27:10;;;;-1:-1:-1;7405:27:10;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7405:27:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7280:159;;;;:::o;4816:436::-;4883:19;4939:13;;;:7;:13;;;;;;;;4904:10;;4962:259;4983:27;;;4962:259;;5050:26;;;5049:33;;;;:72;;-1:-1:-1;5120:1:10;5086:24;;;:11;;;:24;;;;;:31;;-1:-1:-1;;5086:31:10;;;;;;;;;;;:35;5049:72;5045:166;;;5148:24;;;;:11;;;:24;;;;;;;;;5141:31;;;;;;-1:-1:-1;;5141:31:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5148:24;;5141:31;;5148:24;5141:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5190:7;;5045:166;5012:17;;;;;4962:259;;;5244:1;5230:15;;4816:436;;;;;;;:::o;6506:162::-;1356:3;;;:15;;;;;;;;;;;;;;6572:4;;1375:10;;1356:29;:3;;:9;;:15;;;;;;;;;;;;;;;;:3;:15;;;5:2:-1;;;;30:1;27;20:12;5:2;1356:15:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1356:15:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1356:15:10;:29;;;1352:40;;1387:5;;;1352:40;6611:15;;;;;;;;;;;;;;;;;;-1:-1:-1;6588:13:10;;;:7;:13;;;;;:38;;:20;;;:38;;;;;;;;;;6636:25;;;;;;;;;;;;;6596:4;;6636:25;;;;;;;;6506:162;;;;:::o;3192:106::-;3241:11;3270:13;;;:7;:13;;;;;;;;:21;;;3192:106::o;2424:100::-;2470:11;2499:13;;;:7;:13;;;;;:18;;;;2424:100::o;6885:116::-;6971:13;;;;:7;:13;;;;;;;;;:23;;;;6943:10;;6971:18;;;6990:3;;6971:23;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;139:12;;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;-1:-1;;263:2;259:12;;;254:3;250:22;;;246:30;;340:21;;;311:9;;295:26;;;;377:20;;;;365:33;;;6971:23:10;;;;;;;;;;;;;;;;;;6965:29;;;;274:1:-1;6965:29:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6971:23;;-1:-1:-1;6965:29:10;-1:-1:-1;;6965:29:10;;6971:23;6965:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6885:116;;;;:::o;5554:287::-;1356:3;;;:15;;;;;;;;;;;;;;5628:4;;1375:10;;1356:29;:3;;:9;;:15;;;;;;;;;;;;;;;;:3;:15;;;5:2:-1;;;;30:1;27;20:12;5:2;1356:15:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1356:15:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1356:15:10;:29;;;1352:40;;1387:5;;;1352:40;-1:-1:-1;;5695:15:10;;5694:31;;5693:38;5689:49;;5733:5;;;5689:49;5757:13;;;;:7;:13;;;;;;;;:31;;;:18;;:31;;;;;:38;;;;;;;;:::i;:::-;-1:-1:-1;5805:29:10;;5822:11;;5816:4;;5805:29;;;;;5554:287;;;;:::o;4015:99::-;4089:13;;;;:7;:13;;;;;;;;;:18;;;;4083:24;;;;-1:-1:-1;;4083:24:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4061:10;;4089:18;;4083:24;;4089:18;4083:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4015:99;;;:::o;4359:136::-;1356:3;;;:15;;;;;;;;;;;;;;4414:4;;1375:10;;1356:29;:3;;:9;;:15;;;;;;;;;;;;;;;;:3;:15;;;5:2:-1;;;;30:1;27;20:12;5:2;1356:15:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1356:15:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1356:15:10;:29;;;1352:40;;1387:5;;;1352:40;4430:13;;;;:7;:13;;;;;;;;:25;;;;:18;;;;;:25;;;;:::i;:::-;-1:-1:-1;4465:23:10;;;;;;;;;;;;;;;4477:4;;4465:23;;4483:4;;4465:23;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4465:23:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4359:136;;;:::o;3669:146::-;1356:3;;;:15;;;;;;;;;;;;;;3728:4;;1375:10;;1356:29;:3;;:9;;:15;;;;;;;;;;;;;;;;:3;:15;;;5:2:-1;;;;30:1;27;20:12;5:2;1356:15:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1356:15:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1356:15:10;:29;;;1352:40;;1387:5;;;1352:40;3744:13;;;;:7;:13;;;;;;;;;:21;;;:28;;;3782:26;;;;;;;3752:4;;3782:26;;;;;;;;;3669:146;;;:::o;6087:142::-;6135:9;6175:13;;;:7;:13;;;;;:20;;;:22;6199;;;;;6175;;6087:142::o;2750:137::-;1356:3;;;:15;;;;;;;;;;;;;;2806:4;;1375:10;;1356:29;:3;;:9;;:15;;;;;;;;;;;;;;;;:3;:15;;;5:2:-1;;;;30:1;27;20:12;5:2;1356:15:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1356:15:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1356:15:10;:29;;;1352:40;;1387:5;;;1352:40;2822:13;;;;:7;:13;;;;;;;;;:25;;;;;;;;;;;;;2857:23;;;;;;;2822:13;;2857:23;;;;;;;;;2750:137;;;:::o;181:7260::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;181:7260:10;;;-1:-1:-1;181:7260:10;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o",
  "source": "pragma solidity ^0.4.0;\n\nimport \"@aragon/os/contracts/lib/ens/AbstractENS.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    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\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 indexed indexedKey, string key);\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    }\n\n    AbstractENS ens;\n    mapping(bytes32=>Record) records;\n\n    modifier only_owner(bytes32 node) {\n        if (ens.owner(node) != msg.sender) throw;\n        _;\n    }\n\n    /**\n     * Constructor.\n     * @param ensAddr The ENS registrar contract.\n     */\n    function PublicResolver(AbstractENS ensAddr) {\n        ens = ensAddr;\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) constant 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 == INTERFACE_META_ID;\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) constant returns (address ret) {\n        ret = records[node].addr;\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) only_owner(node) {\n        records[node].addr = addr;\n        AddrChanged(node, addr);\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) constant returns (bytes32 ret) {\n        ret = records[node].content;\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) only_owner(node) {\n        records[node].content = hash;\n        ContentChanged(node, hash);\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) constant returns (string ret) {\n        ret = records[node].name;\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 name) only_owner(node) {\n        records[node].name = name;\n        NameChanged(node, name);\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) constant returns (uint256 contentType, bytes data) {\n        var record = records[node];\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;\n            }\n        }\n        contentType = 0;\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 data) only_owner(node) {\n        // Content types must be powers of 2\n        if (((contentType - 1) & contentType) != 0) throw;\n        \n        records[node].abis[contentType] = data;\n        ABIChanged(node, contentType);\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) constant returns (bytes32 x, bytes32 y) {\n        return (records[node].pubkey.x, records[node].pubkey.y);\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) only_owner(node) {\n        records[node].pubkey = PublicKey(x, y);\n        PubkeyChanged(node, x, y);\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 key) constant returns (string ret) {\n        ret = records[node].text[key];\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 key, string value) only_owner(node) {\n        records[node].text[key] = value;\n        TextChanged(node, key, key);\n    }\n}\n",
  "sourcePath": "/Users/brett/Development/aragon/aragon-id/contracts/test/ens/PublicResolver.sol",
  "ast": {
    "absolutePath": "/Users/brett/Development/aragon/aragon-id/contracts/test/ens/PublicResolver.sol",
    "exportedSymbols": {
      "PublicResolver": [
        1401
      ]
    },
    "id": 1402,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 941,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:10"
      },
      {
        "absolutePath": "@aragon/os/contracts/lib/ens/AbstractENS.sol",
        "file": "@aragon/os/contracts/lib/ens/AbstractENS.sol",
        "id": 942,
        "nodeType": "ImportDirective",
        "scope": 1402,
        "sourceUnit": 3408,
        "src": "25:54:10",
        "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": 1401,
        "linearizedBaseContracts": [
          1401
        ],
        "name": "PublicResolver",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 945,
            "name": "INTERFACE_META_ID",
            "nodeType": "VariableDeclaration",
            "scope": 1401,
            "src": "211:46:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 943,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "211:6:10",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30783031666663396137",
              "id": 944,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "247:10:10",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_33540519_by_1",
                "typeString": "int_const 33540519"
              },
              "value": "0x01ffc9a7"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 948,
            "name": "ADDR_INTERFACE_ID",
            "nodeType": "VariableDeclaration",
            "scope": 1401,
            "src": "263:46:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 946,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "263:6:10",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30783362336235376465",
              "id": 947,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "299:10:10",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_993744862_by_1",
                "typeString": "int_const 993744862"
              },
              "value": "0x3b3b57de"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 951,
            "name": "CONTENT_INTERFACE_ID",
            "nodeType": "VariableDeclaration",
            "scope": 1401,
            "src": "315:49:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 949,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "315:6:10",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30786438333839646335",
              "id": 950,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "354:10:10",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_3627589061_by_1",
                "typeString": "int_const 3627589061"
              },
              "value": "0xd8389dc5"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 954,
            "name": "NAME_INTERFACE_ID",
            "nodeType": "VariableDeclaration",
            "scope": 1401,
            "src": "370:46:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 952,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "370:6:10",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30783639316633343331",
              "id": 953,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "406:10:10",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1763652657_by_1",
                "typeString": "int_const 1763652657"
              },
              "value": "0x691f3431"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 957,
            "name": "ABI_INTERFACE_ID",
            "nodeType": "VariableDeclaration",
            "scope": 1401,
            "src": "422:45:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 955,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "422:6:10",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30783232303361623536",
              "id": 956,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "457:10:10",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_570665814_by_1",
                "typeString": "int_const 570665814"
              },
              "value": "0x2203ab56"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 960,
            "name": "PUBKEY_INTERFACE_ID",
            "nodeType": "VariableDeclaration",
            "scope": 1401,
            "src": "473:48:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 958,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "473:6:10",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30786338363930323333",
              "id": 959,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "511:10:10",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_3362325043_by_1",
                "typeString": "int_const 3362325043"
              },
              "value": "0xc8690233"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 963,
            "name": "TEXT_INTERFACE_ID",
            "nodeType": "VariableDeclaration",
            "scope": 1401,
            "src": "527:46:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 961,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "527:6:10",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30783539643164343363",
              "id": 962,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "563:10:10",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1506923580_by_1",
                "typeString": "int_const 1506923580"
              },
              "value": "0x59d1d43c"
            },
            "visibility": "internal"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 969,
            "name": "AddrChanged",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 968,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 965,
                  "indexed": true,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 969,
                  "src": "598:20:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 964,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "598:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 967,
                  "indexed": false,
                  "name": "a",
                  "nodeType": "VariableDeclaration",
                  "scope": 969,
                  "src": "620:9:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 966,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "620:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "597:33:10"
            },
            "src": "580:51:10"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 975,
            "name": "ContentChanged",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 974,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 971,
                  "indexed": true,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 975,
                  "src": "657:20:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 970,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "657:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 973,
                  "indexed": false,
                  "name": "hash",
                  "nodeType": "VariableDeclaration",
                  "scope": 975,
                  "src": "679:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 972,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "679:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "656:36:10"
            },
            "src": "636:57:10"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 981,
            "name": "NameChanged",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 980,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 977,
                  "indexed": true,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 981,
                  "src": "716:20:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 976,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "716:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 979,
                  "indexed": false,
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 981,
                  "src": "738:11:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 978,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "738:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "715:35:10"
            },
            "src": "698:53:10"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 987,
            "name": "ABIChanged",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 986,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 983,
                  "indexed": true,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 987,
                  "src": "773:20:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 982,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "773:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 985,
                  "indexed": true,
                  "name": "contentType",
                  "nodeType": "VariableDeclaration",
                  "scope": 987,
                  "src": "795:27:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 984,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "795:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "772:51:10"
            },
            "src": "756:68:10"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 995,
            "name": "PubkeyChanged",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 994,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 989,
                  "indexed": true,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 995,
                  "src": "849:20:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 988,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "849:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 991,
                  "indexed": false,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 995,
                  "src": "871:9:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 990,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "871:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 993,
                  "indexed": false,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 995,
                  "src": "882:9:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 992,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "882:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "848:44:10"
            },
            "src": "829:64:10"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 1003,
            "name": "TextChanged",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 1002,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 997,
                  "indexed": true,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1003,
                  "src": "916:20:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 996,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "916:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 999,
                  "indexed": true,
                  "name": "indexedKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 1003,
                  "src": "938:25:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 998,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "938:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1001,
                  "indexed": false,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 1003,
                  "src": "965:10:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1000,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "965:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "915:61:10"
            },
            "src": "898:79:10"
          },
          {
            "canonicalName": "PublicResolver.PublicKey",
            "id": 1008,
            "members": [
              {
                "constant": false,
                "id": 1005,
                "name": "x",
                "nodeType": "VariableDeclaration",
                "scope": 1008,
                "src": "1010:9:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 1004,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "1010:7:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1007,
                "name": "y",
                "nodeType": "VariableDeclaration",
                "scope": 1008,
                "src": "1029:9:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 1006,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "1029:7:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "PublicKey",
            "nodeType": "StructDefinition",
            "scope": 1401,
            "src": "983:62:10",
            "visibility": "public"
          },
          {
            "canonicalName": "PublicResolver.Record",
            "id": 1025,
            "members": [
              {
                "constant": false,
                "id": 1010,
                "name": "addr",
                "nodeType": "VariableDeclaration",
                "scope": 1025,
                "src": "1075:12:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 1009,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "1075:7:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1012,
                "name": "content",
                "nodeType": "VariableDeclaration",
                "scope": 1025,
                "src": "1097:15:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 1011,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "1097:7:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1014,
                "name": "name",
                "nodeType": "VariableDeclaration",
                "scope": 1025,
                "src": "1122:11:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                },
                "typeName": {
                  "id": 1013,
                  "name": "string",
                  "nodeType": "ElementaryTypeName",
                  "src": "1122:6:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage_ptr",
                    "typeString": "string"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1016,
                "name": "pubkey",
                "nodeType": "VariableDeclaration",
                "scope": 1025,
                "src": "1143:16:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_PublicKey_$1008_storage_ptr",
                  "typeString": "struct PublicResolver.PublicKey"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 1015,
                  "name": "PublicKey",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 1008,
                  "src": "1143:9:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_PublicKey_$1008_storage_ptr",
                    "typeString": "struct PublicResolver.PublicKey"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1020,
                "name": "text",
                "nodeType": "VariableDeclaration",
                "scope": 1025,
                "src": "1169:28:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_string_memory_$_t_string_storage_$",
                  "typeString": "mapping(string => string)"
                },
                "typeName": {
                  "id": 1019,
                  "keyType": {
                    "id": 1017,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1177:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1169:23:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_string_memory_$_t_string_storage_$",
                    "typeString": "mapping(string => string)"
                  },
                  "valueType": {
                    "id": 1018,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1185:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1024,
                "name": "abis",
                "nodeType": "VariableDeclaration",
                "scope": 1025,
                "src": "1207:28:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes_storage_$",
                  "typeString": "mapping(uint256 => bytes)"
                },
                "typeName": {
                  "id": 1023,
                  "keyType": {
                    "id": 1021,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1215:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1207:23:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes_storage_$",
                    "typeString": "mapping(uint256 => bytes)"
                  },
                  "valueType": {
                    "id": 1022,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1224:5:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Record",
            "nodeType": "StructDefinition",
            "scope": 1401,
            "src": "1051:191:10",
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1027,
            "name": "ens",
            "nodeType": "VariableDeclaration",
            "scope": 1401,
            "src": "1248:15:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_AbstractENS_$3407",
              "typeString": "contract AbstractENS"
            },
            "typeName": {
              "contractScope": null,
              "id": 1026,
              "name": "AbstractENS",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3407,
              "src": "1248:11:10",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AbstractENS_$3407",
                "typeString": "contract AbstractENS"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 1031,
            "name": "records",
            "nodeType": "VariableDeclaration",
            "scope": 1401,
            "src": "1269:32:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$1025_storage_$",
              "typeString": "mapping(bytes32 => struct PublicResolver.Record)"
            },
            "typeName": {
              "id": 1030,
              "keyType": {
                "id": 1028,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "1277:7:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "1269:24:10",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$1025_storage_$",
                "typeString": "mapping(bytes32 => struct PublicResolver.Record)"
              },
              "valueType": {
                "contractScope": null,
                "id": 1029,
                "name": "Record",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 1025,
                "src": "1286:6:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Record_$1025_storage_ptr",
                  "typeString": "struct PublicResolver.Record"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1045,
              "nodeType": "Block",
              "src": "1342:68:10",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 1041,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1037,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1033,
                          "src": "1366:4:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 1035,
                          "name": "ens",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1027,
                          "src": "1356:3:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_AbstractENS_$3407",
                            "typeString": "contract AbstractENS"
                          }
                        },
                        "id": 1036,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "owner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3336,
                        "src": "1356:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                          "typeString": "function (bytes32) view external returns (address)"
                        }
                      },
                      "id": 1038,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1356:15:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1039,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3422,
                        "src": "1375:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 1040,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "1375:10:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "1356:29:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1043,
                  "nodeType": "IfStatement",
                  "src": "1352:40:10",
                  "trueBody": {
                    "id": 1042,
                    "nodeType": "Throw",
                    "src": "1387:5:10"
                  }
                },
                {
                  "id": 1044,
                  "nodeType": "PlaceholderStatement",
                  "src": "1402:1:10"
                }
              ]
            },
            "documentation": null,
            "id": 1046,
            "name": "only_owner",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 1034,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1033,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1046,
                  "src": "1328:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1032,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1328:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1327:14:10"
            },
            "src": "1308:102:10",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1055,
              "nodeType": "Block",
              "src": "1547:30:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1053,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1051,
                      "name": "ens",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1027,
                      "src": "1557:3:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_AbstractENS_$3407",
                        "typeString": "contract AbstractENS"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1052,
                      "name": "ensAddr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1048,
                      "src": "1563:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_AbstractENS_$3407",
                        "typeString": "contract AbstractENS"
                      }
                    },
                    "src": "1557:13:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_AbstractENS_$3407",
                      "typeString": "contract AbstractENS"
                    }
                  },
                  "id": 1054,
                  "nodeType": "ExpressionStatement",
                  "src": "1557:13:10"
                }
              ]
            },
            "documentation": "Constructor.\n@param ensAddr The ENS registrar contract.",
            "id": 1056,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "PublicResolver",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1049,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1048,
                  "name": "ensAddr",
                  "nodeType": "VariableDeclaration",
                  "scope": 1056,
                  "src": "1526:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_AbstractENS_$3407",
                    "typeString": "contract AbstractENS"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1047,
                    "name": "AbstractENS",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3407,
                    "src": "1526:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_AbstractENS_$3407",
                      "typeString": "contract AbstractENS"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1525:21:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 1050,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1547:0:10"
            },
            "scope": 1401,
            "src": "1502:75:10",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1091,
              "nodeType": "Block",
              "src": "1899:366:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 1089,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "id": 1085,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 1081,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 1077,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 1073,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 1069,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                },
                                "id": 1065,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 1063,
                                  "name": "interfaceID",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1058,
                                  "src": "1916:11:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 1064,
                                  "name": "ADDR_INTERFACE_ID",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 948,
                                  "src": "1931:17:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "src": "1916:32:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                },
                                "id": 1068,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 1066,
                                  "name": "interfaceID",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1058,
                                  "src": "1967:11:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 1067,
                                  "name": "CONTENT_INTERFACE_ID",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 951,
                                  "src": "1982:20:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "src": "1967:35:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "1916:86:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "||",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              "id": 1072,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 1070,
                                "name": "interfaceID",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1058,
                                "src": "2021:11:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 1071,
                                "name": "NAME_INTERFACE_ID",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 954,
                                "src": "2036:17:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "src": "2021:32:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "1916:137:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 1076,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1074,
                              "name": "interfaceID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1058,
                              "src": "2072:11:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 1075,
                              "name": "ABI_INTERFACE_ID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 957,
                              "src": "2087:16:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "2072:31:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "1916:187:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          },
                          "id": 1080,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1078,
                            "name": "interfaceID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1058,
                            "src": "2122:11:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 1079,
                            "name": "PUBKEY_INTERFACE_ID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 960,
                            "src": "2137:19:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "2122:34:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "1916:240:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "||",
                      "rightExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "id": 1084,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1082,
                          "name": "interfaceID",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1058,
                          "src": "2175:11:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 1083,
                          "name": "TEXT_INTERFACE_ID",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 963,
                          "src": "2190:17:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "src": "2175:32:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "1916:291:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      },
                      "id": 1088,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 1086,
                        "name": "interfaceID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1058,
                        "src": "2226:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 1087,
                        "name": "INTERFACE_META_ID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 945,
                        "src": "2241:17:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "src": "2226:32:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "1916:342:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 1062,
                  "id": 1090,
                  "nodeType": "Return",
                  "src": "1909:349:10"
                }
              ]
            },
            "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": 1092,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "supportsInterface",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1059,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1058,
                  "name": "interfaceID",
                  "nodeType": "VariableDeclaration",
                  "scope": 1092,
                  "src": "1855:18:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 1057,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "1855:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1854:20:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 1062,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1061,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1092,
                  "src": "1893:4:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1060,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1893:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1892:6:10"
            },
            "scope": 1401,
            "src": "1828:437:10",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1106,
              "nodeType": "Block",
              "src": "2483:41:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1104,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1099,
                      "name": "ret",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1097,
                      "src": "2493:3:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 1100,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1031,
                          "src": "2499:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$1025_storage_$",
                            "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                          }
                        },
                        "id": 1102,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 1101,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1094,
                          "src": "2507:4:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2499:13:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$1025_storage",
                          "typeString": "struct PublicResolver.Record storage ref"
                        }
                      },
                      "id": 1103,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "addr",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1010,
                      "src": "2499:18:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2493:24:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 1105,
                  "nodeType": "ExpressionStatement",
                  "src": "2493:24:10"
                }
              ]
            },
            "documentation": "Returns the address associated with an ENS node.\n@param node The ENS node to query.\n@return The associated address.",
            "id": 1107,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "addr",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1095,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1094,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1107,
                  "src": "2438:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1093,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2438:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2437:14:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 1098,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1097,
                  "name": "ret",
                  "nodeType": "VariableDeclaration",
                  "scope": 1107,
                  "src": "2470:11:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1096,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2470:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2469:13:10"
            },
            "scope": 1401,
            "src": "2424:100:10",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1129,
              "nodeType": "Block",
              "src": "2812:75:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1122,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 1117,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1031,
                          "src": "2822:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$1025_storage_$",
                            "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                          }
                        },
                        "id": 1119,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 1118,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1109,
                          "src": "2830:4:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2822:13:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$1025_storage",
                          "typeString": "struct PublicResolver.Record storage ref"
                        }
                      },
                      "id": 1120,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "addr",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1010,
                      "src": "2822:18:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1121,
                      "name": "addr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1111,
                      "src": "2843:4:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2822:25:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 1123,
                  "nodeType": "ExpressionStatement",
                  "src": "2822:25:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1125,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1109,
                        "src": "2869:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1126,
                        "name": "addr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1111,
                        "src": "2875:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 1124,
                      "name": "AddrChanged",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 969,
                      "src": "2857:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address)"
                      }
                    },
                    "id": 1127,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2857:23:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1128,
                  "nodeType": "ExpressionStatement",
                  "src": "2857:23:10"
                }
              ]
            },
            "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": 1130,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 1114,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1109,
                    "src": "2806:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 1115,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1113,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1046,
                  "src": "2795:10:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2795:16:10"
              }
            ],
            "name": "setAddr",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1112,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1109,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1130,
                  "src": "2767:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1108,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2767:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1111,
                  "name": "addr",
                  "nodeType": "VariableDeclaration",
                  "scope": 1130,
                  "src": "2781:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1110,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2781:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2766:28:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 1116,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2812:0:10"
            },
            "scope": 1401,
            "src": "2750:137:10",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1144,
              "nodeType": "Block",
              "src": "3254:44:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1142,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1137,
                      "name": "ret",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1135,
                      "src": "3264:3:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 1138,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1031,
                          "src": "3270:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$1025_storage_$",
                            "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                          }
                        },
                        "id": 1140,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 1139,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1132,
                          "src": "3278:4:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3270:13:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$1025_storage",
                          "typeString": "struct PublicResolver.Record storage ref"
                        }
                      },
                      "id": 1141,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "content",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1012,
                      "src": "3270:21:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "3264:27:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 1143,
                  "nodeType": "ExpressionStatement",
                  "src": "3264:27:10"
                }
              ]
            },
            "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": 1145,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "content",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1133,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1132,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1145,
                  "src": "3209:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1131,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3209:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3208:14:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 1136,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1135,
                  "name": "ret",
                  "nodeType": "VariableDeclaration",
                  "scope": 1145,
                  "src": "3241:11:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1134,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3241:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3240:13:10"
            },
            "scope": 1401,
            "src": "3192:106:10",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1167,
              "nodeType": "Block",
              "src": "3734:81:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1160,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 1155,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1031,
                          "src": "3744:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$1025_storage_$",
                            "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                          }
                        },
                        "id": 1157,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 1156,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1147,
                          "src": "3752:4:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3744:13:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$1025_storage",
                          "typeString": "struct PublicResolver.Record storage ref"
                        }
                      },
                      "id": 1158,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "content",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1012,
                      "src": "3744:21:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1159,
                      "name": "hash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1149,
                      "src": "3768:4:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "3744:28:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 1161,
                  "nodeType": "ExpressionStatement",
                  "src": "3744:28:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1163,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1147,
                        "src": "3797:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1164,
                        "name": "hash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1149,
                        "src": "3803:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 1162,
                      "name": "ContentChanged",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 975,
                      "src": "3782:14:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32,bytes32)"
                      }
                    },
                    "id": 1165,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3782:26:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1166,
                  "nodeType": "ExpressionStatement",
                  "src": "3782:26:10"
                }
              ]
            },
            "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": 1168,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 1152,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1147,
                    "src": "3728:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 1153,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1151,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1046,
                  "src": "3717:10:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3717:16:10"
              }
            ],
            "name": "setContent",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1150,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1147,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1168,
                  "src": "3689:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1146,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3689:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1149,
                  "name": "hash",
                  "nodeType": "VariableDeclaration",
                  "scope": 1168,
                  "src": "3703:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1148,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3703:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3688:28:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 1154,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3734:0:10"
            },
            "scope": 1401,
            "src": "3669:146:10",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1182,
              "nodeType": "Block",
              "src": "4073:41:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1180,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1175,
                      "name": "ret",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1173,
                      "src": "4083:3:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 1176,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1031,
                          "src": "4089:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$1025_storage_$",
                            "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                          }
                        },
                        "id": 1178,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 1177,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1170,
                          "src": "4097:4:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4089:13:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$1025_storage",
                          "typeString": "struct PublicResolver.Record storage ref"
                        }
                      },
                      "id": 1179,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "name",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1014,
                      "src": "4089:18:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "src": "4083:24:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "id": 1181,
                  "nodeType": "ExpressionStatement",
                  "src": "4083:24:10"
                }
              ]
            },
            "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": 1183,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "name",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1171,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1170,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1183,
                  "src": "4029:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1169,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4029:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4028:14:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 1174,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1173,
                  "name": "ret",
                  "nodeType": "VariableDeclaration",
                  "scope": 1183,
                  "src": "4061:10:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1172,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4061:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4060:12:10"
            },
            "scope": 1401,
            "src": "4015:99:10",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1205,
              "nodeType": "Block",
              "src": "4420:75:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1198,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 1193,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1031,
                          "src": "4430:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$1025_storage_$",
                            "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                          }
                        },
                        "id": 1195,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 1194,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1185,
                          "src": "4438:4:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4430:13:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$1025_storage",
                          "typeString": "struct PublicResolver.Record storage ref"
                        }
                      },
                      "id": 1196,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "name",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1014,
                      "src": "4430:18:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1197,
                      "name": "name",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1187,
                      "src": "4451:4:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "4430:25:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 1199,
                  "nodeType": "ExpressionStatement",
                  "src": "4430:25:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1201,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1185,
                        "src": "4477:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1202,
                        "name": "name",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1187,
                        "src": "4483:4:10",
                        "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": 1200,
                      "name": "NameChanged",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 981,
                      "src": "4465:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bytes32,string memory)"
                      }
                    },
                    "id": 1203,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4465:23:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1204,
                  "nodeType": "ExpressionStatement",
                  "src": "4465:23:10"
                }
              ]
            },
            "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": 1206,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 1190,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1185,
                    "src": "4414:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 1191,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1189,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1046,
                  "src": "4403:10:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4403:16:10"
              }
            ],
            "name": "setName",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1188,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1185,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1206,
                  "src": "4376:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1184,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4376:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1187,
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 1206,
                  "src": "4390:11:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1186,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4390:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4375:27:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 1192,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4420:0:10"
            },
            "scope": 1401,
            "src": "4359:136:10",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1263,
              "nodeType": "Block",
              "src": "4916:336:10",
              "statements": [
                {
                  "assignments": [
                    1217
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1217,
                      "name": "record",
                      "nodeType": "VariableDeclaration",
                      "scope": 1264,
                      "src": "4926:10:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Record_$1025_storage_ptr",
                        "typeString": "struct PublicResolver.Record"
                      },
                      "typeName": null,
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1221,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1218,
                      "name": "records",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1031,
                      "src": "4939:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$1025_storage_$",
                        "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                      }
                    },
                    "id": 1220,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1219,
                      "name": "node",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1208,
                      "src": "4947:4:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4939:13:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Record_$1025_storage",
                      "typeString": "struct PublicResolver.Record storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4926:26:10"
                },
                {
                  "body": {
                    "id": 1257,
                    "nodeType": "Block",
                    "src": "5031:190:10",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 1246,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1238,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 1235,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 1233,
                                    "name": "contentType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1213,
                                    "src": "5050:11:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 1234,
                                    "name": "contentTypes",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1210,
                                    "src": "5064:12:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "5050:26:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 1236,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "5049:28:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 1237,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5081:1:10",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "5049:33:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1245,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1239,
                                    "name": "record",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1217,
                                    "src": "5086:6:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Record_$1025_storage_ptr",
                                      "typeString": "struct PublicResolver.Record storage pointer"
                                    }
                                  },
                                  "id": 1240,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "abis",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1024,
                                  "src": "5086:11:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes_storage_$",
                                    "typeString": "mapping(uint256 => bytes storage ref)"
                                  }
                                },
                                "id": 1242,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 1241,
                                  "name": "contentType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1213,
                                  "src": "5098:11:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5086:24:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                }
                              },
                              "id": 1243,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "5086:31:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 1244,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5120:1:10",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "5086:35:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "5049:72:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1256,
                        "nodeType": "IfStatement",
                        "src": "5045:166:10",
                        "trueBody": {
                          "id": 1255,
                          "nodeType": "Block",
                          "src": "5123:88:10",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1252,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 1247,
                                  "name": "data",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1215,
                                  "src": "5141:4:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1248,
                                      "name": "record",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1217,
                                      "src": "5148:6:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Record_$1025_storage_ptr",
                                        "typeString": "struct PublicResolver.Record storage pointer"
                                      }
                                    },
                                    "id": 1249,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "abis",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 1024,
                                    "src": "5148:11:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes_storage_$",
                                      "typeString": "mapping(uint256 => bytes storage ref)"
                                    }
                                  },
                                  "id": 1251,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 1250,
                                    "name": "contentType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1213,
                                    "src": "5160:11:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5148:24:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_storage",
                                    "typeString": "bytes storage ref"
                                  }
                                },
                                "src": "5141:31:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 1253,
                              "nodeType": "ExpressionStatement",
                              "src": "5141:31:10"
                            },
                            {
                              "expression": null,
                              "functionReturnParameters": 1216,
                              "id": 1254,
                              "nodeType": "Return",
                              "src": "5190:7:10"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1228,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1226,
                      "name": "contentType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1213,
                      "src": "4983:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 1227,
                      "name": "contentTypes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1210,
                      "src": "4998:12:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4983:27:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1258,
                  "initializationExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 1224,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 1222,
                        "name": "contentType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1213,
                        "src": "4966:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 1223,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4980:1:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "4966:15:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1225,
                    "nodeType": "ExpressionStatement",
                    "src": "4966:15:10"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 1231,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 1229,
                        "name": "contentType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1213,
                        "src": "5012:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "<<=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 1230,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5028:1:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "5012:17:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1232,
                    "nodeType": "ExpressionStatement",
                    "src": "5012:17:10"
                  },
                  "nodeType": "ForStatement",
                  "src": "4962:259:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1261,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1259,
                      "name": "contentType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1213,
                      "src": "5230:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1260,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5244:1:10",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "5230:15:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1262,
                  "nodeType": "ExpressionStatement",
                  "src": "5230:15:10"
                }
              ]
            },
            "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": 1264,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "ABI",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1211,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1208,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1264,
                  "src": "4829:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1207,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4829:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1210,
                  "name": "contentTypes",
                  "nodeType": "VariableDeclaration",
                  "scope": 1264,
                  "src": "4843:20:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1209,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4843:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4828:36:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 1216,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1213,
                  "name": "contentType",
                  "nodeType": "VariableDeclaration",
                  "scope": 1264,
                  "src": "4883:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1212,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4883:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1215,
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "scope": 1264,
                  "src": "4904:10:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1214,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "4904:5:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4882:33:10"
            },
            "scope": 1401,
            "src": "4816:436:10",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1301,
              "nodeType": "Block",
              "src": "5634:207:10",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1284,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1281,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1278,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 1276,
                                  "name": "contentType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1268,
                                  "src": "5695:11:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 1277,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5709:1:10",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "5695:15:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 1279,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "5694:17:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 1280,
                            "name": "contentType",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1268,
                            "src": "5714:11:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5694:31:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1282,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "5693:33:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1283,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5730:1:10",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "5693:38:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1286,
                  "nodeType": "IfStatement",
                  "src": "5689:49:10",
                  "trueBody": {
                    "id": 1285,
                    "nodeType": "Throw",
                    "src": "5733:5:10"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1294,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1287,
                            "name": "records",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1031,
                            "src": "5757:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$1025_storage_$",
                              "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                            }
                          },
                          "id": 1289,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1288,
                            "name": "node",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1266,
                            "src": "5765:4:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5757:13:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Record_$1025_storage",
                            "typeString": "struct PublicResolver.Record storage ref"
                          }
                        },
                        "id": 1290,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "abis",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1024,
                        "src": "5757:18:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes_storage_$",
                          "typeString": "mapping(uint256 => bytes storage ref)"
                        }
                      },
                      "id": 1292,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 1291,
                        "name": "contentType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1268,
                        "src": "5776:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "5757:31:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage",
                        "typeString": "bytes storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1293,
                      "name": "data",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1270,
                      "src": "5791:4:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "src": "5757:38:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage",
                      "typeString": "bytes storage ref"
                    }
                  },
                  "id": 1295,
                  "nodeType": "ExpressionStatement",
                  "src": "5757:38:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1297,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1266,
                        "src": "5816:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1298,
                        "name": "contentType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1268,
                        "src": "5822:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1296,
                      "name": "ABIChanged",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 987,
                      "src": "5805:10:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint256_$returns$__$",
                        "typeString": "function (bytes32,uint256)"
                      }
                    },
                    "id": 1299,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5805:29:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1300,
                  "nodeType": "ExpressionStatement",
                  "src": "5805:29:10"
                }
              ]
            },
            "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": 1302,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 1273,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1266,
                    "src": "5628:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 1274,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1272,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1046,
                  "src": "5617:10:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5617:16:10"
              }
            ],
            "name": "setABI",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1271,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1266,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1302,
                  "src": "5570:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1265,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5570:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1268,
                  "name": "contentType",
                  "nodeType": "VariableDeclaration",
                  "scope": 1302,
                  "src": "5584:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1267,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5584:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1270,
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "scope": 1302,
                  "src": "5605:10:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1269,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5605:5:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5569:47:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 1275,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5634:0:10"
            },
            "scope": 1401,
            "src": "5554:287:10",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1323,
              "nodeType": "Block",
              "src": "6157:72:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1311,
                              "name": "records",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1031,
                              "src": "6175:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$1025_storage_$",
                                "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                              }
                            },
                            "id": 1313,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1312,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1304,
                              "src": "6183:4:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "6175:13:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Record_$1025_storage",
                              "typeString": "struct PublicResolver.Record storage ref"
                            }
                          },
                          "id": 1314,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "pubkey",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1016,
                          "src": "6175:20:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PublicKey_$1008_storage",
                            "typeString": "struct PublicResolver.PublicKey storage ref"
                          }
                        },
                        "id": 1315,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "x",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1005,
                        "src": "6175:22:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1316,
                              "name": "records",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1031,
                              "src": "6199:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$1025_storage_$",
                                "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                              }
                            },
                            "id": 1318,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1317,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1304,
                              "src": "6207:4:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "6199:13:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Record_$1025_storage",
                              "typeString": "struct PublicResolver.Record storage ref"
                            }
                          },
                          "id": 1319,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "pubkey",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1016,
                          "src": "6199:20:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PublicKey_$1008_storage",
                            "typeString": "struct PublicResolver.PublicKey storage ref"
                          }
                        },
                        "id": 1320,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "y",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1007,
                        "src": "6199:22:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "id": 1321,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "6174:48:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes32_$",
                      "typeString": "tuple(bytes32,bytes32)"
                    }
                  },
                  "functionReturnParameters": 1310,
                  "id": 1322,
                  "nodeType": "Return",
                  "src": "6167:55:10"
                }
              ]
            },
            "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": 1324,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "pubkey",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1305,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1304,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1324,
                  "src": "6103:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1303,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6103:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6102:14:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 1310,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1307,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 1324,
                  "src": "6135:9:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1306,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6135:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1309,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 1324,
                  "src": "6146:9:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1308,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6146:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6134:22:10"
            },
            "scope": 1401,
            "src": "6087:142:10",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1352,
              "nodeType": "Block",
              "src": "6578:90:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1344,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 1336,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1031,
                          "src": "6588:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$1025_storage_$",
                            "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                          }
                        },
                        "id": 1338,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 1337,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1326,
                          "src": "6596:4:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "6588:13:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$1025_storage",
                          "typeString": "struct PublicResolver.Record storage ref"
                        }
                      },
                      "id": 1339,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "pubkey",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1016,
                      "src": "6588:20:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_PublicKey_$1008_storage",
                        "typeString": "struct PublicResolver.PublicKey storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1341,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1328,
                          "src": "6621:1:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1342,
                          "name": "y",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1330,
                          "src": "6624:1:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 1340,
                        "name": "PublicKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1008,
                        "src": "6611:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_PublicKey_$1008_storage_ptr_$",
                          "typeString": "type(struct PublicResolver.PublicKey storage pointer)"
                        }
                      },
                      "id": 1343,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6611:15:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_PublicKey_$1008_memory",
                        "typeString": "struct PublicResolver.PublicKey memory"
                      }
                    },
                    "src": "6588:38:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PublicKey_$1008_storage",
                      "typeString": "struct PublicResolver.PublicKey storage ref"
                    }
                  },
                  "id": 1345,
                  "nodeType": "ExpressionStatement",
                  "src": "6588:38:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1347,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1326,
                        "src": "6650:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1348,
                        "name": "x",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1328,
                        "src": "6656:1:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1349,
                        "name": "y",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1330,
                        "src": "6659:1:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 1346,
                      "name": "PubkeyChanged",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 995,
                      "src": "6636:13:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32,bytes32,bytes32)"
                      }
                    },
                    "id": 1350,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6636:25:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1351,
                  "nodeType": "ExpressionStatement",
                  "src": "6636:25:10"
                }
              ]
            },
            "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": 1353,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 1333,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1326,
                    "src": "6572:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 1334,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1332,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1046,
                  "src": "6561:10:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6561:16:10"
              }
            ],
            "name": "setPubkey",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1331,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1326,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1353,
                  "src": "6525:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1325,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6525:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1328,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 1353,
                  "src": "6539:9:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1327,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6539:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1330,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 1353,
                  "src": "6550:9:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1329,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6550:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6524:36:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 1335,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6578:0:10"
            },
            "scope": 1401,
            "src": "6506:162:10",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1371,
              "nodeType": "Block",
              "src": "6955:46:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1369,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1362,
                      "name": "ret",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1360,
                      "src": "6965:3:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1363,
                            "name": "records",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1031,
                            "src": "6971:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$1025_storage_$",
                              "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                            }
                          },
                          "id": 1365,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1364,
                            "name": "node",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1355,
                            "src": "6979:4:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "6971:13:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Record_$1025_storage",
                            "typeString": "struct PublicResolver.Record storage ref"
                          }
                        },
                        "id": 1366,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "text",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1020,
                        "src": "6971:18:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_string_memory_$_t_string_storage_$",
                          "typeString": "mapping(string memory => string storage ref)"
                        }
                      },
                      "id": 1368,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 1367,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1357,
                        "src": "6990:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "6971:23:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "src": "6965:29:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "id": 1370,
                  "nodeType": "ExpressionStatement",
                  "src": "6965:29:10"
                }
              ]
            },
            "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": 1372,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "text",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1358,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1355,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1372,
                  "src": "6899:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1354,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6899:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1357,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 1372,
                  "src": "6913:10:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1356,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6913:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6898:26:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 1361,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1360,
                  "name": "ret",
                  "nodeType": "VariableDeclaration",
                  "scope": 1372,
                  "src": "6943:10:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1359,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6943:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6942:12:10"
            },
            "scope": 1401,
            "src": "6885:116:10",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1399,
              "nodeType": "Block",
              "src": "7354:85:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1391,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1384,
                            "name": "records",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1031,
                            "src": "7364:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$1025_storage_$",
                              "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                            }
                          },
                          "id": 1386,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1385,
                            "name": "node",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1374,
                            "src": "7372:4:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "7364:13:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Record_$1025_storage",
                            "typeString": "struct PublicResolver.Record storage ref"
                          }
                        },
                        "id": 1387,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "text",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1020,
                        "src": "7364:18:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_string_memory_$_t_string_storage_$",
                          "typeString": "mapping(string memory => string storage ref)"
                        }
                      },
                      "id": 1389,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 1388,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1376,
                        "src": "7383:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "7364:23:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1390,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1378,
                      "src": "7390:5:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "7364:31:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 1392,
                  "nodeType": "ExpressionStatement",
                  "src": "7364:31:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1394,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1374,
                        "src": "7417:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1395,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1376,
                        "src": "7423:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1396,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1376,
                        "src": "7428:3:10",
                        "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": 1393,
                      "name": "TextChanged",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1003,
                      "src": "7405:11:10",
                      "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": 1397,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7405:27:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1398,
                  "nodeType": "ExpressionStatement",
                  "src": "7405:27:10"
                }
              ]
            },
            "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": 1400,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 1381,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1374,
                    "src": "7348:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 1382,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1380,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1046,
                  "src": "7337:10:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7337:16:10"
              }
            ],
            "name": "setText",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1379,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1374,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1400,
                  "src": "7297:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1373,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7297:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1376,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 1400,
                  "src": "7311:10:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1375,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "7311:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1378,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 1400,
                  "src": "7323:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1377,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "7323:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7296:40:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 1383,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7354:0:10"
            },
            "scope": 1401,
            "src": "7280:159:10",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 1402,
        "src": "181:7260:10"
      }
    ],
    "src": "0:7442:10"
  },
  "legacyAST": {
    "absolutePath": "/Users/brett/Development/aragon/aragon-id/contracts/test/ens/PublicResolver.sol",
    "exportedSymbols": {
      "PublicResolver": [
        1401
      ]
    },
    "id": 1402,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 941,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:10"
      },
      {
        "absolutePath": "@aragon/os/contracts/lib/ens/AbstractENS.sol",
        "file": "@aragon/os/contracts/lib/ens/AbstractENS.sol",
        "id": 942,
        "nodeType": "ImportDirective",
        "scope": 1402,
        "sourceUnit": 3408,
        "src": "25:54:10",
        "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": 1401,
        "linearizedBaseContracts": [
          1401
        ],
        "name": "PublicResolver",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 945,
            "name": "INTERFACE_META_ID",
            "nodeType": "VariableDeclaration",
            "scope": 1401,
            "src": "211:46:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 943,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "211:6:10",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30783031666663396137",
              "id": 944,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "247:10:10",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_33540519_by_1",
                "typeString": "int_const 33540519"
              },
              "value": "0x01ffc9a7"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 948,
            "name": "ADDR_INTERFACE_ID",
            "nodeType": "VariableDeclaration",
            "scope": 1401,
            "src": "263:46:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 946,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "263:6:10",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30783362336235376465",
              "id": 947,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "299:10:10",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_993744862_by_1",
                "typeString": "int_const 993744862"
              },
              "value": "0x3b3b57de"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 951,
            "name": "CONTENT_INTERFACE_ID",
            "nodeType": "VariableDeclaration",
            "scope": 1401,
            "src": "315:49:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 949,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "315:6:10",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30786438333839646335",
              "id": 950,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "354:10:10",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_3627589061_by_1",
                "typeString": "int_const 3627589061"
              },
              "value": "0xd8389dc5"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 954,
            "name": "NAME_INTERFACE_ID",
            "nodeType": "VariableDeclaration",
            "scope": 1401,
            "src": "370:46:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 952,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "370:6:10",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30783639316633343331",
              "id": 953,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "406:10:10",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1763652657_by_1",
                "typeString": "int_const 1763652657"
              },
              "value": "0x691f3431"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 957,
            "name": "ABI_INTERFACE_ID",
            "nodeType": "VariableDeclaration",
            "scope": 1401,
            "src": "422:45:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 955,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "422:6:10",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30783232303361623536",
              "id": 956,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "457:10:10",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_570665814_by_1",
                "typeString": "int_const 570665814"
              },
              "value": "0x2203ab56"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 960,
            "name": "PUBKEY_INTERFACE_ID",
            "nodeType": "VariableDeclaration",
            "scope": 1401,
            "src": "473:48:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 958,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "473:6:10",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30786338363930323333",
              "id": 959,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "511:10:10",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_3362325043_by_1",
                "typeString": "int_const 3362325043"
              },
              "value": "0xc8690233"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 963,
            "name": "TEXT_INTERFACE_ID",
            "nodeType": "VariableDeclaration",
            "scope": 1401,
            "src": "527:46:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 961,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "527:6:10",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30783539643164343363",
              "id": 962,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "563:10:10",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1506923580_by_1",
                "typeString": "int_const 1506923580"
              },
              "value": "0x59d1d43c"
            },
            "visibility": "internal"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 969,
            "name": "AddrChanged",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 968,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 965,
                  "indexed": true,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 969,
                  "src": "598:20:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 964,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "598:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 967,
                  "indexed": false,
                  "name": "a",
                  "nodeType": "VariableDeclaration",
                  "scope": 969,
                  "src": "620:9:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 966,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "620:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "597:33:10"
            },
            "src": "580:51:10"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 975,
            "name": "ContentChanged",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 974,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 971,
                  "indexed": true,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 975,
                  "src": "657:20:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 970,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "657:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 973,
                  "indexed": false,
                  "name": "hash",
                  "nodeType": "VariableDeclaration",
                  "scope": 975,
                  "src": "679:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 972,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "679:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "656:36:10"
            },
            "src": "636:57:10"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 981,
            "name": "NameChanged",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 980,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 977,
                  "indexed": true,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 981,
                  "src": "716:20:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 976,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "716:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 979,
                  "indexed": false,
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 981,
                  "src": "738:11:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 978,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "738:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "715:35:10"
            },
            "src": "698:53:10"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 987,
            "name": "ABIChanged",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 986,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 983,
                  "indexed": true,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 987,
                  "src": "773:20:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 982,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "773:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 985,
                  "indexed": true,
                  "name": "contentType",
                  "nodeType": "VariableDeclaration",
                  "scope": 987,
                  "src": "795:27:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 984,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "795:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "772:51:10"
            },
            "src": "756:68:10"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 995,
            "name": "PubkeyChanged",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 994,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 989,
                  "indexed": true,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 995,
                  "src": "849:20:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 988,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "849:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 991,
                  "indexed": false,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 995,
                  "src": "871:9:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 990,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "871:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 993,
                  "indexed": false,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 995,
                  "src": "882:9:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 992,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "882:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "848:44:10"
            },
            "src": "829:64:10"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 1003,
            "name": "TextChanged",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 1002,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 997,
                  "indexed": true,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1003,
                  "src": "916:20:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 996,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "916:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 999,
                  "indexed": true,
                  "name": "indexedKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 1003,
                  "src": "938:25:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 998,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "938:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1001,
                  "indexed": false,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 1003,
                  "src": "965:10:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1000,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "965:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "915:61:10"
            },
            "src": "898:79:10"
          },
          {
            "canonicalName": "PublicResolver.PublicKey",
            "id": 1008,
            "members": [
              {
                "constant": false,
                "id": 1005,
                "name": "x",
                "nodeType": "VariableDeclaration",
                "scope": 1008,
                "src": "1010:9:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 1004,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "1010:7:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1007,
                "name": "y",
                "nodeType": "VariableDeclaration",
                "scope": 1008,
                "src": "1029:9:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 1006,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "1029:7:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "PublicKey",
            "nodeType": "StructDefinition",
            "scope": 1401,
            "src": "983:62:10",
            "visibility": "public"
          },
          {
            "canonicalName": "PublicResolver.Record",
            "id": 1025,
            "members": [
              {
                "constant": false,
                "id": 1010,
                "name": "addr",
                "nodeType": "VariableDeclaration",
                "scope": 1025,
                "src": "1075:12:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 1009,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "1075:7:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1012,
                "name": "content",
                "nodeType": "VariableDeclaration",
                "scope": 1025,
                "src": "1097:15:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 1011,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "1097:7:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1014,
                "name": "name",
                "nodeType": "VariableDeclaration",
                "scope": 1025,
                "src": "1122:11:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                },
                "typeName": {
                  "id": 1013,
                  "name": "string",
                  "nodeType": "ElementaryTypeName",
                  "src": "1122:6:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage_ptr",
                    "typeString": "string"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1016,
                "name": "pubkey",
                "nodeType": "VariableDeclaration",
                "scope": 1025,
                "src": "1143:16:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_PublicKey_$1008_storage_ptr",
                  "typeString": "struct PublicResolver.PublicKey"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 1015,
                  "name": "PublicKey",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 1008,
                  "src": "1143:9:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_PublicKey_$1008_storage_ptr",
                    "typeString": "struct PublicResolver.PublicKey"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1020,
                "name": "text",
                "nodeType": "VariableDeclaration",
                "scope": 1025,
                "src": "1169:28:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_string_memory_$_t_string_storage_$",
                  "typeString": "mapping(string => string)"
                },
                "typeName": {
                  "id": 1019,
                  "keyType": {
                    "id": 1017,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1177:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1169:23:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_string_memory_$_t_string_storage_$",
                    "typeString": "mapping(string => string)"
                  },
                  "valueType": {
                    "id": 1018,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1185:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1024,
                "name": "abis",
                "nodeType": "VariableDeclaration",
                "scope": 1025,
                "src": "1207:28:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes_storage_$",
                  "typeString": "mapping(uint256 => bytes)"
                },
                "typeName": {
                  "id": 1023,
                  "keyType": {
                    "id": 1021,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1215:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1207:23:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes_storage_$",
                    "typeString": "mapping(uint256 => bytes)"
                  },
                  "valueType": {
                    "id": 1022,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1224:5:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Record",
            "nodeType": "StructDefinition",
            "scope": 1401,
            "src": "1051:191:10",
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1027,
            "name": "ens",
            "nodeType": "VariableDeclaration",
            "scope": 1401,
            "src": "1248:15:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_AbstractENS_$3407",
              "typeString": "contract AbstractENS"
            },
            "typeName": {
              "contractScope": null,
              "id": 1026,
              "name": "AbstractENS",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3407,
              "src": "1248:11:10",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AbstractENS_$3407",
                "typeString": "contract AbstractENS"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 1031,
            "name": "records",
            "nodeType": "VariableDeclaration",
            "scope": 1401,
            "src": "1269:32:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$1025_storage_$",
              "typeString": "mapping(bytes32 => struct PublicResolver.Record)"
            },
            "typeName": {
              "id": 1030,
              "keyType": {
                "id": 1028,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "1277:7:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "1269:24:10",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$1025_storage_$",
                "typeString": "mapping(bytes32 => struct PublicResolver.Record)"
              },
              "valueType": {
                "contractScope": null,
                "id": 1029,
                "name": "Record",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 1025,
                "src": "1286:6:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Record_$1025_storage_ptr",
                  "typeString": "struct PublicResolver.Record"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1045,
              "nodeType": "Block",
              "src": "1342:68:10",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 1041,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1037,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1033,
                          "src": "1366:4:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 1035,
                          "name": "ens",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1027,
                          "src": "1356:3:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_AbstractENS_$3407",
                            "typeString": "contract AbstractENS"
                          }
                        },
                        "id": 1036,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "owner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3336,
                        "src": "1356:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                          "typeString": "function (bytes32) view external returns (address)"
                        }
                      },
                      "id": 1038,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1356:15:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1039,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3422,
                        "src": "1375:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 1040,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "1375:10:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "1356:29:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1043,
                  "nodeType": "IfStatement",
                  "src": "1352:40:10",
                  "trueBody": {
                    "id": 1042,
                    "nodeType": "Throw",
                    "src": "1387:5:10"
                  }
                },
                {
                  "id": 1044,
                  "nodeType": "PlaceholderStatement",
                  "src": "1402:1:10"
                }
              ]
            },
            "documentation": null,
            "id": 1046,
            "name": "only_owner",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 1034,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1033,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1046,
                  "src": "1328:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1032,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1328:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1327:14:10"
            },
            "src": "1308:102:10",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1055,
              "nodeType": "Block",
              "src": "1547:30:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1053,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1051,
                      "name": "ens",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1027,
                      "src": "1557:3:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_AbstractENS_$3407",
                        "typeString": "contract AbstractENS"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1052,
                      "name": "ensAddr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1048,
                      "src": "1563:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_AbstractENS_$3407",
                        "typeString": "contract AbstractENS"
                      }
                    },
                    "src": "1557:13:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_AbstractENS_$3407",
                      "typeString": "contract AbstractENS"
                    }
                  },
                  "id": 1054,
                  "nodeType": "ExpressionStatement",
                  "src": "1557:13:10"
                }
              ]
            },
            "documentation": "Constructor.\n@param ensAddr The ENS registrar contract.",
            "id": 1056,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "PublicResolver",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1049,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1048,
                  "name": "ensAddr",
                  "nodeType": "VariableDeclaration",
                  "scope": 1056,
                  "src": "1526:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_AbstractENS_$3407",
                    "typeString": "contract AbstractENS"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1047,
                    "name": "AbstractENS",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3407,
                    "src": "1526:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_AbstractENS_$3407",
                      "typeString": "contract AbstractENS"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1525:21:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 1050,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1547:0:10"
            },
            "scope": 1401,
            "src": "1502:75:10",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1091,
              "nodeType": "Block",
              "src": "1899:366:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 1089,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "id": 1085,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 1081,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 1077,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 1073,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 1069,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                },
                                "id": 1065,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 1063,
                                  "name": "interfaceID",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1058,
                                  "src": "1916:11:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 1064,
                                  "name": "ADDR_INTERFACE_ID",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 948,
                                  "src": "1931:17:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "src": "1916:32:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                },
                                "id": 1068,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 1066,
                                  "name": "interfaceID",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1058,
                                  "src": "1967:11:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 1067,
                                  "name": "CONTENT_INTERFACE_ID",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 951,
                                  "src": "1982:20:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "src": "1967:35:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "1916:86:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "||",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              "id": 1072,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 1070,
                                "name": "interfaceID",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1058,
                                "src": "2021:11:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 1071,
                                "name": "NAME_INTERFACE_ID",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 954,
                                "src": "2036:17:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "src": "2021:32:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "1916:137:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 1076,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1074,
                              "name": "interfaceID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1058,
                              "src": "2072:11:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 1075,
                              "name": "ABI_INTERFACE_ID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 957,
                              "src": "2087:16:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "2072:31:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "1916:187:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          },
                          "id": 1080,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1078,
                            "name": "interfaceID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1058,
                            "src": "2122:11:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 1079,
                            "name": "PUBKEY_INTERFACE_ID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 960,
                            "src": "2137:19:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "2122:34:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "1916:240:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "||",
                      "rightExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "id": 1084,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1082,
                          "name": "interfaceID",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1058,
                          "src": "2175:11:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 1083,
                          "name": "TEXT_INTERFACE_ID",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 963,
                          "src": "2190:17:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "src": "2175:32:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "1916:291:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      },
                      "id": 1088,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 1086,
                        "name": "interfaceID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1058,
                        "src": "2226:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 1087,
                        "name": "INTERFACE_META_ID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 945,
                        "src": "2241:17:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "src": "2226:32:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "1916:342:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 1062,
                  "id": 1090,
                  "nodeType": "Return",
                  "src": "1909:349:10"
                }
              ]
            },
            "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": 1092,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "supportsInterface",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1059,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1058,
                  "name": "interfaceID",
                  "nodeType": "VariableDeclaration",
                  "scope": 1092,
                  "src": "1855:18:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 1057,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "1855:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1854:20:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 1062,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1061,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1092,
                  "src": "1893:4:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1060,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1893:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1892:6:10"
            },
            "scope": 1401,
            "src": "1828:437:10",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1106,
              "nodeType": "Block",
              "src": "2483:41:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1104,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1099,
                      "name": "ret",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1097,
                      "src": "2493:3:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 1100,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1031,
                          "src": "2499:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$1025_storage_$",
                            "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                          }
                        },
                        "id": 1102,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 1101,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1094,
                          "src": "2507:4:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2499:13:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$1025_storage",
                          "typeString": "struct PublicResolver.Record storage ref"
                        }
                      },
                      "id": 1103,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "addr",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1010,
                      "src": "2499:18:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2493:24:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 1105,
                  "nodeType": "ExpressionStatement",
                  "src": "2493:24:10"
                }
              ]
            },
            "documentation": "Returns the address associated with an ENS node.\n@param node The ENS node to query.\n@return The associated address.",
            "id": 1107,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "addr",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1095,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1094,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1107,
                  "src": "2438:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1093,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2438:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2437:14:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 1098,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1097,
                  "name": "ret",
                  "nodeType": "VariableDeclaration",
                  "scope": 1107,
                  "src": "2470:11:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1096,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2470:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2469:13:10"
            },
            "scope": 1401,
            "src": "2424:100:10",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1129,
              "nodeType": "Block",
              "src": "2812:75:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1122,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 1117,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1031,
                          "src": "2822:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$1025_storage_$",
                            "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                          }
                        },
                        "id": 1119,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 1118,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1109,
                          "src": "2830:4:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2822:13:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$1025_storage",
                          "typeString": "struct PublicResolver.Record storage ref"
                        }
                      },
                      "id": 1120,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "addr",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1010,
                      "src": "2822:18:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1121,
                      "name": "addr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1111,
                      "src": "2843:4:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2822:25:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 1123,
                  "nodeType": "ExpressionStatement",
                  "src": "2822:25:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1125,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1109,
                        "src": "2869:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1126,
                        "name": "addr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1111,
                        "src": "2875:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 1124,
                      "name": "AddrChanged",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 969,
                      "src": "2857:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address)"
                      }
                    },
                    "id": 1127,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2857:23:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1128,
                  "nodeType": "ExpressionStatement",
                  "src": "2857:23:10"
                }
              ]
            },
            "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": 1130,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 1114,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1109,
                    "src": "2806:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 1115,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1113,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1046,
                  "src": "2795:10:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2795:16:10"
              }
            ],
            "name": "setAddr",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1112,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1109,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1130,
                  "src": "2767:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1108,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2767:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1111,
                  "name": "addr",
                  "nodeType": "VariableDeclaration",
                  "scope": 1130,
                  "src": "2781:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1110,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2781:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2766:28:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 1116,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2812:0:10"
            },
            "scope": 1401,
            "src": "2750:137:10",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1144,
              "nodeType": "Block",
              "src": "3254:44:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1142,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1137,
                      "name": "ret",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1135,
                      "src": "3264:3:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 1138,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1031,
                          "src": "3270:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$1025_storage_$",
                            "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                          }
                        },
                        "id": 1140,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 1139,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1132,
                          "src": "3278:4:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3270:13:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$1025_storage",
                          "typeString": "struct PublicResolver.Record storage ref"
                        }
                      },
                      "id": 1141,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "content",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1012,
                      "src": "3270:21:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "3264:27:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 1143,
                  "nodeType": "ExpressionStatement",
                  "src": "3264:27:10"
                }
              ]
            },
            "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": 1145,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "content",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1133,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1132,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1145,
                  "src": "3209:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1131,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3209:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3208:14:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 1136,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1135,
                  "name": "ret",
                  "nodeType": "VariableDeclaration",
                  "scope": 1145,
                  "src": "3241:11:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1134,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3241:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3240:13:10"
            },
            "scope": 1401,
            "src": "3192:106:10",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1167,
              "nodeType": "Block",
              "src": "3734:81:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1160,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 1155,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1031,
                          "src": "3744:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$1025_storage_$",
                            "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                          }
                        },
                        "id": 1157,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 1156,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1147,
                          "src": "3752:4:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3744:13:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$1025_storage",
                          "typeString": "struct PublicResolver.Record storage ref"
                        }
                      },
                      "id": 1158,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "content",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1012,
                      "src": "3744:21:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1159,
                      "name": "hash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1149,
                      "src": "3768:4:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "3744:28:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 1161,
                  "nodeType": "ExpressionStatement",
                  "src": "3744:28:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1163,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1147,
                        "src": "3797:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1164,
                        "name": "hash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1149,
                        "src": "3803:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 1162,
                      "name": "ContentChanged",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 975,
                      "src": "3782:14:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32,bytes32)"
                      }
                    },
                    "id": 1165,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3782:26:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1166,
                  "nodeType": "ExpressionStatement",
                  "src": "3782:26:10"
                }
              ]
            },
            "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": 1168,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 1152,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1147,
                    "src": "3728:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 1153,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1151,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1046,
                  "src": "3717:10:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3717:16:10"
              }
            ],
            "name": "setContent",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1150,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1147,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1168,
                  "src": "3689:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1146,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3689:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1149,
                  "name": "hash",
                  "nodeType": "VariableDeclaration",
                  "scope": 1168,
                  "src": "3703:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1148,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3703:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3688:28:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 1154,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3734:0:10"
            },
            "scope": 1401,
            "src": "3669:146:10",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1182,
              "nodeType": "Block",
              "src": "4073:41:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1180,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1175,
                      "name": "ret",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1173,
                      "src": "4083:3:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 1176,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1031,
                          "src": "4089:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$1025_storage_$",
                            "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                          }
                        },
                        "id": 1178,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 1177,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1170,
                          "src": "4097:4:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4089:13:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$1025_storage",
                          "typeString": "struct PublicResolver.Record storage ref"
                        }
                      },
                      "id": 1179,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "name",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1014,
                      "src": "4089:18:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "src": "4083:24:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "id": 1181,
                  "nodeType": "ExpressionStatement",
                  "src": "4083:24:10"
                }
              ]
            },
            "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": 1183,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "name",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1171,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1170,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1183,
                  "src": "4029:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1169,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4029:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4028:14:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 1174,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1173,
                  "name": "ret",
                  "nodeType": "VariableDeclaration",
                  "scope": 1183,
                  "src": "4061:10:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1172,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4061:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4060:12:10"
            },
            "scope": 1401,
            "src": "4015:99:10",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1205,
              "nodeType": "Block",
              "src": "4420:75:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1198,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 1193,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1031,
                          "src": "4430:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$1025_storage_$",
                            "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                          }
                        },
                        "id": 1195,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 1194,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1185,
                          "src": "4438:4:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4430:13:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$1025_storage",
                          "typeString": "struct PublicResolver.Record storage ref"
                        }
                      },
                      "id": 1196,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "name",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1014,
                      "src": "4430:18:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1197,
                      "name": "name",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1187,
                      "src": "4451:4:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "4430:25:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 1199,
                  "nodeType": "ExpressionStatement",
                  "src": "4430:25:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1201,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1185,
                        "src": "4477:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1202,
                        "name": "name",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1187,
                        "src": "4483:4:10",
                        "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": 1200,
                      "name": "NameChanged",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 981,
                      "src": "4465:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bytes32,string memory)"
                      }
                    },
                    "id": 1203,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4465:23:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1204,
                  "nodeType": "ExpressionStatement",
                  "src": "4465:23:10"
                }
              ]
            },
            "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": 1206,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 1190,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1185,
                    "src": "4414:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 1191,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1189,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1046,
                  "src": "4403:10:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4403:16:10"
              }
            ],
            "name": "setName",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1188,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1185,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1206,
                  "src": "4376:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1184,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4376:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1187,
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 1206,
                  "src": "4390:11:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1186,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4390:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4375:27:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 1192,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4420:0:10"
            },
            "scope": 1401,
            "src": "4359:136:10",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1263,
              "nodeType": "Block",
              "src": "4916:336:10",
              "statements": [
                {
                  "assignments": [
                    1217
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1217,
                      "name": "record",
                      "nodeType": "VariableDeclaration",
                      "scope": 1264,
                      "src": "4926:10:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Record_$1025_storage_ptr",
                        "typeString": "struct PublicResolver.Record"
                      },
                      "typeName": null,
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1221,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1218,
                      "name": "records",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1031,
                      "src": "4939:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$1025_storage_$",
                        "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                      }
                    },
                    "id": 1220,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1219,
                      "name": "node",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1208,
                      "src": "4947:4:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4939:13:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Record_$1025_storage",
                      "typeString": "struct PublicResolver.Record storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4926:26:10"
                },
                {
                  "body": {
                    "id": 1257,
                    "nodeType": "Block",
                    "src": "5031:190:10",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 1246,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1238,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 1235,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 1233,
                                    "name": "contentType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1213,
                                    "src": "5050:11:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 1234,
                                    "name": "contentTypes",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1210,
                                    "src": "5064:12:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "5050:26:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 1236,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "5049:28:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 1237,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5081:1:10",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "5049:33:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1245,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1239,
                                    "name": "record",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1217,
                                    "src": "5086:6:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Record_$1025_storage_ptr",
                                      "typeString": "struct PublicResolver.Record storage pointer"
                                    }
                                  },
                                  "id": 1240,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "abis",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1024,
                                  "src": "5086:11:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes_storage_$",
                                    "typeString": "mapping(uint256 => bytes storage ref)"
                                  }
                                },
                                "id": 1242,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 1241,
                                  "name": "contentType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1213,
                                  "src": "5098:11:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5086:24:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                }
                              },
                              "id": 1243,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "5086:31:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 1244,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5120:1:10",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "5086:35:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "5049:72:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1256,
                        "nodeType": "IfStatement",
                        "src": "5045:166:10",
                        "trueBody": {
                          "id": 1255,
                          "nodeType": "Block",
                          "src": "5123:88:10",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1252,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 1247,
                                  "name": "data",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1215,
                                  "src": "5141:4:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1248,
                                      "name": "record",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1217,
                                      "src": "5148:6:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Record_$1025_storage_ptr",
                                        "typeString": "struct PublicResolver.Record storage pointer"
                                      }
                                    },
                                    "id": 1249,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "abis",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 1024,
                                    "src": "5148:11:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes_storage_$",
                                      "typeString": "mapping(uint256 => bytes storage ref)"
                                    }
                                  },
                                  "id": 1251,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 1250,
                                    "name": "contentType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1213,
                                    "src": "5160:11:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5148:24:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_storage",
                                    "typeString": "bytes storage ref"
                                  }
                                },
                                "src": "5141:31:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 1253,
                              "nodeType": "ExpressionStatement",
                              "src": "5141:31:10"
                            },
                            {
                              "expression": null,
                              "functionReturnParameters": 1216,
                              "id": 1254,
                              "nodeType": "Return",
                              "src": "5190:7:10"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1228,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1226,
                      "name": "contentType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1213,
                      "src": "4983:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 1227,
                      "name": "contentTypes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1210,
                      "src": "4998:12:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4983:27:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1258,
                  "initializationExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 1224,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 1222,
                        "name": "contentType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1213,
                        "src": "4966:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 1223,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4980:1:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "4966:15:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1225,
                    "nodeType": "ExpressionStatement",
                    "src": "4966:15:10"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 1231,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 1229,
                        "name": "contentType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1213,
                        "src": "5012:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "<<=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 1230,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5028:1:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "5012:17:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1232,
                    "nodeType": "ExpressionStatement",
                    "src": "5012:17:10"
                  },
                  "nodeType": "ForStatement",
                  "src": "4962:259:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1261,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1259,
                      "name": "contentType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1213,
                      "src": "5230:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1260,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5244:1:10",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "5230:15:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1262,
                  "nodeType": "ExpressionStatement",
                  "src": "5230:15:10"
                }
              ]
            },
            "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": 1264,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "ABI",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1211,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1208,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1264,
                  "src": "4829:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1207,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4829:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1210,
                  "name": "contentTypes",
                  "nodeType": "VariableDeclaration",
                  "scope": 1264,
                  "src": "4843:20:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1209,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4843:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4828:36:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 1216,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1213,
                  "name": "contentType",
                  "nodeType": "VariableDeclaration",
                  "scope": 1264,
                  "src": "4883:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1212,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4883:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1215,
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "scope": 1264,
                  "src": "4904:10:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1214,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "4904:5:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4882:33:10"
            },
            "scope": 1401,
            "src": "4816:436:10",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1301,
              "nodeType": "Block",
              "src": "5634:207:10",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1284,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1281,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1278,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 1276,
                                  "name": "contentType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1268,
                                  "src": "5695:11:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 1277,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5709:1:10",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "5695:15:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 1279,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "5694:17:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 1280,
                            "name": "contentType",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1268,
                            "src": "5714:11:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5694:31:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1282,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "5693:33:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1283,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5730:1:10",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "5693:38:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1286,
                  "nodeType": "IfStatement",
                  "src": "5689:49:10",
                  "trueBody": {
                    "id": 1285,
                    "nodeType": "Throw",
                    "src": "5733:5:10"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1294,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1287,
                            "name": "records",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1031,
                            "src": "5757:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$1025_storage_$",
                              "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                            }
                          },
                          "id": 1289,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1288,
                            "name": "node",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1266,
                            "src": "5765:4:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5757:13:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Record_$1025_storage",
                            "typeString": "struct PublicResolver.Record storage ref"
                          }
                        },
                        "id": 1290,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "abis",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1024,
                        "src": "5757:18:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes_storage_$",
                          "typeString": "mapping(uint256 => bytes storage ref)"
                        }
                      },
                      "id": 1292,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 1291,
                        "name": "contentType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1268,
                        "src": "5776:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "5757:31:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage",
                        "typeString": "bytes storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1293,
                      "name": "data",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1270,
                      "src": "5791:4:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "src": "5757:38:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage",
                      "typeString": "bytes storage ref"
                    }
                  },
                  "id": 1295,
                  "nodeType": "ExpressionStatement",
                  "src": "5757:38:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1297,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1266,
                        "src": "5816:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1298,
                        "name": "contentType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1268,
                        "src": "5822:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1296,
                      "name": "ABIChanged",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 987,
                      "src": "5805:10:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint256_$returns$__$",
                        "typeString": "function (bytes32,uint256)"
                      }
                    },
                    "id": 1299,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5805:29:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1300,
                  "nodeType": "ExpressionStatement",
                  "src": "5805:29:10"
                }
              ]
            },
            "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": 1302,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 1273,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1266,
                    "src": "5628:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 1274,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1272,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1046,
                  "src": "5617:10:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5617:16:10"
              }
            ],
            "name": "setABI",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1271,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1266,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1302,
                  "src": "5570:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1265,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5570:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1268,
                  "name": "contentType",
                  "nodeType": "VariableDeclaration",
                  "scope": 1302,
                  "src": "5584:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1267,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5584:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1270,
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "scope": 1302,
                  "src": "5605:10:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1269,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5605:5:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5569:47:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 1275,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5634:0:10"
            },
            "scope": 1401,
            "src": "5554:287:10",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1323,
              "nodeType": "Block",
              "src": "6157:72:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1311,
                              "name": "records",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1031,
                              "src": "6175:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$1025_storage_$",
                                "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                              }
                            },
                            "id": 1313,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1312,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1304,
                              "src": "6183:4:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "6175:13:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Record_$1025_storage",
                              "typeString": "struct PublicResolver.Record storage ref"
                            }
                          },
                          "id": 1314,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "pubkey",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1016,
                          "src": "6175:20:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PublicKey_$1008_storage",
                            "typeString": "struct PublicResolver.PublicKey storage ref"
                          }
                        },
                        "id": 1315,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "x",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1005,
                        "src": "6175:22:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1316,
                              "name": "records",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1031,
                              "src": "6199:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$1025_storage_$",
                                "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                              }
                            },
                            "id": 1318,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1317,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1304,
                              "src": "6207:4:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "6199:13:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Record_$1025_storage",
                              "typeString": "struct PublicResolver.Record storage ref"
                            }
                          },
                          "id": 1319,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "pubkey",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1016,
                          "src": "6199:20:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PublicKey_$1008_storage",
                            "typeString": "struct PublicResolver.PublicKey storage ref"
                          }
                        },
                        "id": 1320,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "y",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1007,
                        "src": "6199:22:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "id": 1321,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "6174:48:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes32_$",
                      "typeString": "tuple(bytes32,bytes32)"
                    }
                  },
                  "functionReturnParameters": 1310,
                  "id": 1322,
                  "nodeType": "Return",
                  "src": "6167:55:10"
                }
              ]
            },
            "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": 1324,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "pubkey",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1305,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1304,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1324,
                  "src": "6103:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1303,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6103:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6102:14:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 1310,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1307,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 1324,
                  "src": "6135:9:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1306,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6135:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1309,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 1324,
                  "src": "6146:9:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1308,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6146:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6134:22:10"
            },
            "scope": 1401,
            "src": "6087:142:10",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1352,
              "nodeType": "Block",
              "src": "6578:90:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1344,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 1336,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1031,
                          "src": "6588:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$1025_storage_$",
                            "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                          }
                        },
                        "id": 1338,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 1337,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1326,
                          "src": "6596:4:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "6588:13:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$1025_storage",
                          "typeString": "struct PublicResolver.Record storage ref"
                        }
                      },
                      "id": 1339,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "pubkey",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1016,
                      "src": "6588:20:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_PublicKey_$1008_storage",
                        "typeString": "struct PublicResolver.PublicKey storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1341,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1328,
                          "src": "6621:1:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1342,
                          "name": "y",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1330,
                          "src": "6624:1:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 1340,
                        "name": "PublicKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1008,
                        "src": "6611:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_PublicKey_$1008_storage_ptr_$",
                          "typeString": "type(struct PublicResolver.PublicKey storage pointer)"
                        }
                      },
                      "id": 1343,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6611:15:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_PublicKey_$1008_memory",
                        "typeString": "struct PublicResolver.PublicKey memory"
                      }
                    },
                    "src": "6588:38:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PublicKey_$1008_storage",
                      "typeString": "struct PublicResolver.PublicKey storage ref"
                    }
                  },
                  "id": 1345,
                  "nodeType": "ExpressionStatement",
                  "src": "6588:38:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1347,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1326,
                        "src": "6650:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1348,
                        "name": "x",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1328,
                        "src": "6656:1:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1349,
                        "name": "y",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1330,
                        "src": "6659:1:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 1346,
                      "name": "PubkeyChanged",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 995,
                      "src": "6636:13:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32,bytes32,bytes32)"
                      }
                    },
                    "id": 1350,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6636:25:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1351,
                  "nodeType": "ExpressionStatement",
                  "src": "6636:25:10"
                }
              ]
            },
            "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": 1353,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 1333,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1326,
                    "src": "6572:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 1334,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1332,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1046,
                  "src": "6561:10:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6561:16:10"
              }
            ],
            "name": "setPubkey",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1331,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1326,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1353,
                  "src": "6525:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1325,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6525:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1328,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 1353,
                  "src": "6539:9:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1327,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6539:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1330,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 1353,
                  "src": "6550:9:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1329,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6550:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6524:36:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 1335,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6578:0:10"
            },
            "scope": 1401,
            "src": "6506:162:10",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1371,
              "nodeType": "Block",
              "src": "6955:46:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1369,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1362,
                      "name": "ret",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1360,
                      "src": "6965:3:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1363,
                            "name": "records",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1031,
                            "src": "6971:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$1025_storage_$",
                              "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                            }
                          },
                          "id": 1365,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1364,
                            "name": "node",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1355,
                            "src": "6979:4:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "6971:13:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Record_$1025_storage",
                            "typeString": "struct PublicResolver.Record storage ref"
                          }
                        },
                        "id": 1366,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "text",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1020,
                        "src": "6971:18:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_string_memory_$_t_string_storage_$",
                          "typeString": "mapping(string memory => string storage ref)"
                        }
                      },
                      "id": 1368,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 1367,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1357,
                        "src": "6990:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "6971:23:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "src": "6965:29:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "id": 1370,
                  "nodeType": "ExpressionStatement",
                  "src": "6965:29:10"
                }
              ]
            },
            "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": 1372,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "text",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1358,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1355,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1372,
                  "src": "6899:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1354,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6899:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1357,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 1372,
                  "src": "6913:10:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1356,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6913:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6898:26:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 1361,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1360,
                  "name": "ret",
                  "nodeType": "VariableDeclaration",
                  "scope": 1372,
                  "src": "6943:10:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1359,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6943:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6942:12:10"
            },
            "scope": 1401,
            "src": "6885:116:10",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1399,
              "nodeType": "Block",
              "src": "7354:85:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1391,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1384,
                            "name": "records",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1031,
                            "src": "7364:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$1025_storage_$",
                              "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                            }
                          },
                          "id": 1386,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1385,
                            "name": "node",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1374,
                            "src": "7372:4:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "7364:13:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Record_$1025_storage",
                            "typeString": "struct PublicResolver.Record storage ref"
                          }
                        },
                        "id": 1387,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "text",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1020,
                        "src": "7364:18:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_string_memory_$_t_string_storage_$",
                          "typeString": "mapping(string memory => string storage ref)"
                        }
                      },
                      "id": 1389,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 1388,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1376,
                        "src": "7383:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "7364:23:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1390,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1378,
                      "src": "7390:5:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "7364:31:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 1392,
                  "nodeType": "ExpressionStatement",
                  "src": "7364:31:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1394,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1374,
                        "src": "7417:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1395,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1376,
                        "src": "7423:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1396,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1376,
                        "src": "7428:3:10",
                        "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": 1393,
                      "name": "TextChanged",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1003,
                      "src": "7405:11:10",
                      "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": 1397,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7405:27:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1398,
                  "nodeType": "ExpressionStatement",
                  "src": "7405:27:10"
                }
              ]
            },
            "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": 1400,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 1381,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1374,
                    "src": "7348:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 1382,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1380,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1046,
                  "src": "7337:10:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7337:16:10"
              }
            ],
            "name": "setText",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1379,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1374,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 1400,
                  "src": "7297:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1373,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7297:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1376,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 1400,
                  "src": "7311:10:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1375,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "7311:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1378,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 1400,
                  "src": "7323:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1377,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "7323:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7296:40:10"
            },
            "payable": false,
            "returnParameters": {
              "id": 1383,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7354:0:10"
            },
            "scope": 1401,
            "src": "7280:159:10",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 1402,
        "src": "181:7260:10"
      }
    ],
    "src": "0:7442:10"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "2.0.1",
  "updatedAt": "2020-01-30T18:28:02.811Z"
}