{
  "contractName": "PublicENSRegistry",
  "abi": [
    {
      "inputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_node",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "name": "_label",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "NewOwner",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_node",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_node",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "name": "_resolver",
          "type": "address"
        }
      ],
      "name": "NewResolver",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_node",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "name": "_ttl",
          "type": "uint64"
        }
      ],
      "name": "NewTTL",
      "type": "event"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_node",
          "type": "bytes32"
        }
      ],
      "name": "owner",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_node",
          "type": "bytes32"
        }
      ],
      "name": "resolver",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_node",
          "type": "bytes32"
        }
      ],
      "name": "ttl",
      "outputs": [
        {
          "name": "",
          "type": "uint64"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_node",
          "type": "bytes32"
        },
        {
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "setOwner",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_node",
          "type": "bytes32"
        },
        {
          "name": "_label",
          "type": "bytes32"
        },
        {
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "setSubnodeOwner",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_node",
          "type": "bytes32"
        },
        {
          "name": "_resolver",
          "type": "address"
        }
      ],
      "name": "setResolver",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_node",
          "type": "bytes32"
        },
        {
          "name": "_ttl",
          "type": "uint64"
        }
      ],
      "name": "setTTL",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.5.8+commit.23d335f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[{\"name\":\"_node\",\"type\":\"bytes32\"}],\"name\":\"resolver\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_node\",\"type\":\"bytes32\"}],\"name\":\"owner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_node\",\"type\":\"bytes32\"},{\"name\":\"_label\",\"type\":\"bytes32\"},{\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"setSubnodeOwner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_node\",\"type\":\"bytes32\"},{\"name\":\"_ttl\",\"type\":\"uint64\"}],\"name\":\"setTTL\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_node\",\"type\":\"bytes32\"}],\"name\":\"ttl\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_node\",\"type\":\"bytes32\"},{\"name\":\"_resolver\",\"type\":\"address\"}],\"name\":\"setResolver\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_node\",\"type\":\"bytes32\"},{\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"setOwner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_node\",\"type\":\"bytes32\"},{\"indexed\":true,\"name\":\"_label\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"NewOwner\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_node\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_node\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"_resolver\",\"type\":\"address\"}],\"name\":\"NewResolver\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_node\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"_ttl\",\"type\":\"uint64\"}],\"name\":\"NewTTL\",\"type\":\"event\"}],\"devdoc\":{\"methods\":{\"setOwner(bytes32,address)\":{\"params\":{\"_node\":\"The node to transfer ownership of.\",\"_owner\":\"The address of the new owner.\"}},\"setResolver(bytes32,address)\":{\"params\":{\"_node\":\"The node to update.\",\"_resolver\":\"The address of the resolver.\"}},\"setSubnodeOwner(bytes32,bytes32,address)\":{\"params\":{\"_label\":\"The hash of the label specifying the subnode.\",\"_node\":\"The parent node.\",\"_owner\":\"The address of the new owner.\"}},\"setTTL(bytes32,uint64)\":{\"params\":{\"_node\":\"The node to update.\",\"_ttl\":\"The TTL in seconds.\"}}}},\"userdoc\":{\"methods\":{\"constructor\":\"Constructs a new ENS registrar.\",\"owner(bytes32)\":{\"notice\":\"Returns the address that owns the specified node.\"},\"resolver(bytes32)\":{\"notice\":\"Returns the address of the resolver for the specified node.\"},\"setOwner(bytes32,address)\":{\"notice\":\"Transfers ownership of a node to a new address. May only be called by the current owner of the node.\"},\"setResolver(bytes32,address)\":{\"notice\":\"Sets the resolver address for the specified node.\"},\"setSubnodeOwner(bytes32,bytes32,address)\":{\"notice\":\"Transfers ownership of a subnode sha3(node, label) to a new address. May only be called by the owner of the parent node.\"},\"setTTL(bytes32,uint64)\":{\"notice\":\"Sets the TTL for the specified node.\"},\"ttl(bytes32)\":{\"notice\":\"Returns the TTL of a node, and any records associated with it.\"}},\"notice\":\"ENS registry test contract.\"}},\"settings\":{\"compilationTarget\":{\"/Users/sh/Dev/clients/0trust/authereum/monorepo/packages/contracts/contracts/test/PublicENSRegistry.sol\":\"PublicENSRegistry\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/sh/Dev/clients/0trust/authereum/monorepo/packages/contracts/contracts/ens/ENS.sol\":{\"keccak256\":\"0x5d16fc3e0391d797ec23210e235bdfaa56173034d6e2d1f4d671b62b989c5d05\",\"urls\":[\"bzzr://5adfe3f301d2ee7e3c169d7b164e8d6151da7f201ca8294c65120247523986b6\"]},\"/Users/sh/Dev/clients/0trust/authereum/monorepo/packages/contracts/contracts/test/PublicENSRegistry.sol\":{\"keccak256\":\"0xab2e0b76ca7e7a646725c2e6352091c4b6982b71b7db3a89771ef68db4911c5a\",\"urls\":[\"bzzr://29452769594a31cfbace5c88982de5136de272444bc2585ff0403f8eb4484489\"]}},\"version\":1}",
  "bytecode": "0x608060405234801561001057600080fd5b50336000808060001b815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506109e9806100776000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806314ab90381161005b57806314ab9038146101b657806316a25cbd146101f85780631896f70a1461024e5780635b0fc9c31461029c5761007d565b80630178b8bf1461008257806302571be3146100f057806306ab59231461015e575b600080fd5b6100ae6004803603602081101561009857600080fd5b81019080803590602001909291905050506102ea565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61011c6004803603602081101561010657600080fd5b8101908080359060200190929190505050610329565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101b46004803603606081101561017457600080fd5b810190808035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610368565b005b6101f6600480360360408110156101cc57600080fd5b8101908080359060200190929190803567ffffffffffffffff169060200190929190505050610515565b005b6102246004803603602081101561020e57600080fd5b810190808035906020019092919050505061065c565b604051808267ffffffffffffffff1667ffffffffffffffff16815260200191505060405180910390f35b61029a6004803603604081101561026457600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061068f565b005b6102e8600480360360408110156102b257600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610806565b005b600080600083815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600080600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b823373ffffffffffffffffffffffffffffffffffffffff1660008083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610422576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604081526020018061097e6040913960400191505060405180910390fd5b60008484604051602001808381526020018281526020019250505060405160208183030381529060405280519060200120905083857fce0457fe73731f824cc272376169235128c118b49d344817417c6d108d155e8285604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a38260008083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050565b813373ffffffffffffffffffffffffffffffffffffffff1660008083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604081526020018061097e6040913960400191505060405180910390fd5b827f1d4f9bbfc9cab89d66e1a1562f2233ccbf1308cb4f63de2ead5787adddb8fa6883604051808267ffffffffffffffff1667ffffffffffffffff16815260200191505060405180910390a28160008085815260200190815260200160002060010160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505050565b600080600083815260200190815260200160002060010160149054906101000a900467ffffffffffffffff169050919050565b813373ffffffffffffffffffffffffffffffffffffffff1660008083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610749576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604081526020018061097e6040913960400191505060405180910390fd5b827f335721b01866dc23fbee8b6b2c7b1e14d6f05c28cd35a2c934239f94095602a083604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a28160008085815260200190815260200160002060010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b813373ffffffffffffffffffffffffffffffffffffffff1660008083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604081526020018061097e6040913960400191505060405180910390fd5b827fd4735d920b0f87494915f556dd9b54c8f309026070caea5c737245152564d26683604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a28160008085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505056fe454e53546573743a2074686973206d6574686f64206e6565647320746f2062652063616c6c656420627920746865206f776e6572206f6620746865206e6f6465a165627a7a72305820ca9ad271e9f334108449a1913f61f25e3056c8c483f657c83dc1aa9f74f1bcef0029",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c806314ab90381161005b57806314ab9038146101b657806316a25cbd146101f85780631896f70a1461024e5780635b0fc9c31461029c5761007d565b80630178b8bf1461008257806302571be3146100f057806306ab59231461015e575b600080fd5b6100ae6004803603602081101561009857600080fd5b81019080803590602001909291905050506102ea565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61011c6004803603602081101561010657600080fd5b8101908080359060200190929190505050610329565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101b46004803603606081101561017457600080fd5b810190808035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610368565b005b6101f6600480360360408110156101cc57600080fd5b8101908080359060200190929190803567ffffffffffffffff169060200190929190505050610515565b005b6102246004803603602081101561020e57600080fd5b810190808035906020019092919050505061065c565b604051808267ffffffffffffffff1667ffffffffffffffff16815260200191505060405180910390f35b61029a6004803603604081101561026457600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061068f565b005b6102e8600480360360408110156102b257600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610806565b005b600080600083815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600080600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b823373ffffffffffffffffffffffffffffffffffffffff1660008083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610422576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604081526020018061097e6040913960400191505060405180910390fd5b60008484604051602001808381526020018281526020019250505060405160208183030381529060405280519060200120905083857fce0457fe73731f824cc272376169235128c118b49d344817417c6d108d155e8285604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a38260008083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050565b813373ffffffffffffffffffffffffffffffffffffffff1660008083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604081526020018061097e6040913960400191505060405180910390fd5b827f1d4f9bbfc9cab89d66e1a1562f2233ccbf1308cb4f63de2ead5787adddb8fa6883604051808267ffffffffffffffff1667ffffffffffffffff16815260200191505060405180910390a28160008085815260200190815260200160002060010160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505050565b600080600083815260200190815260200160002060010160149054906101000a900467ffffffffffffffff169050919050565b813373ffffffffffffffffffffffffffffffffffffffff1660008083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610749576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604081526020018061097e6040913960400191505060405180910390fd5b827f335721b01866dc23fbee8b6b2c7b1e14d6f05c28cd35a2c934239f94095602a083604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a28160008085815260200190815260200160002060010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b813373ffffffffffffffffffffffffffffffffffffffff1660008083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604081526020018061097e6040913960400191505060405180910390fd5b827fd4735d920b0f87494915f556dd9b54c8f309026070caea5c737245152564d26683604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a28160008085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505056fe454e53546573743a2074686973206d6574686f64206e6565647320746f2062652063616c6c656420627920746865206f776e6572206f6620746865206e6f6465a165627a7a72305820ca9ad271e9f334108449a1913f61f25e3056c8c483f657c83dc1aa9f74f1bcef0029",
  "sourceMap": "90:3264:11:-;;;1091:76;8:9:-1;5:2;;;30:1;27;20:12;5:2;1091:76:11;1150:10;1122:7;:19;1138:1;1130:10;;1122:19;;;;;;;;;;;:25;;;:38;;;;;;;;;;;;;;;;;;90:3264;;;;;;",
  "deployedSourceMap": "90:3264:11:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;90:3264:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1439:110;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1439:110:11;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1246:104;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1246:104:11;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2453:261;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2453:261:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3207:145;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3207:145:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1641:99;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1641:99:11;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2886:176;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2886:176:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1983:158;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1983:158:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1439:110;1493:7;1519;:14;1527:5;1519:14;;;;;;;;;;;:23;;;;;;;;;;;;1512:30;;1439:110;;;:::o;1246:104::-;1297:7;1323;:14;1331:5;1323:14;;;;;;;;;;;:20;;;;;;;;;;;;1316:27;;1246:104;;;:::o;2453:261::-;2543:5;933:10;909:34;;:7;:14;917:5;909:14;;;;;;;;;;;:20;;;;;;;;;;;;:34;;;901:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2560:15;2605:5;2612:6;2588:31;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2588:31:11;;;2578:42;;;;;;2560:60;;2651:6;2644:5;2635:31;2659:6;2635:31;;;;;;;;;;;;;;;;;;;;;;2701:6;2676:7;:16;2684:7;2676:16;;;;;;;;;;;:22;;;:31;;;;;;;;;;;;;;;;;;1022:1;2453:261;;;;:::o;3207:145::-;3269:5;933:10;909:34;;:7;:14;917:5;909:14;;;;;;;;;;;:20;;;;;;;;;;;;:34;;;901:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3298:5;3291:19;3305:4;3291:19;;;;;;;;;;;;;;;;;;;;;;3341:4;3320:7;:14;3328:5;3320:14;;;;;;;;;;;:18;;;:25;;;;;;;;;;;;;;;;;;3207:145;;;:::o;1641:99::-;1690:6;1715:7;:14;1723:5;1715:14;;;;;;;;;;;:18;;;;;;;;;;;;1708:25;;1641:99;;;:::o;2886:176::-;2959:5;933:10;909:34;;:7;:14;917:5;909:14;;;;;;;;;;;:20;;;;;;;;;;;;:34;;;901:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2993:5;2981:29;3000:9;2981:29;;;;;;;;;;;;;;;;;;;;;;3046:9;3020:7;:14;3028:5;3020:14;;;;;;;;;;;:23;;;:35;;;;;;;;;;;;;;;;;;2886:176;;;:::o;1983:158::-;2050:5;933:10;909:34;;:7;:14;917:5;909:14;;;;;;;;;;;:20;;;;;;;;;;;;:34;;;901:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2081:5;2072:23;2088:6;2072:23;;;;;;;;;;;;;;;;;;;;;;2128:6;2105:7;:14;2113:5;2105:14;;;;;;;;;;;:20;;;:29;;;;;;;;;;;;;;;;;;1983:158;;;:::o",
  "source": "pragma solidity ^0.5.8;\n\nimport \"../ens/ENS.sol\";\n\n/**\n * ENS registry test contract.\n */\ncontract PublicENSRegistry is ENSRegistry {\n\n    struct Record {\n        address owner;\n        address resolver;\n        uint64 ttl;\n    }\n\n    mapping(bytes32=>Record) records;\n\n    // Logged when the owner of a node assigns a new owner to a subnode.\n    event NewOwner(bytes32 indexed _node, bytes32 indexed _label, address _owner);\n\n    // Logged when the owner of a node transfers ownership to a new account.\n    event Transfer(bytes32 indexed _node, address _owner);\n\n    // Logged when the resolver for a node changes.\n    event NewResolver(bytes32 indexed _node, address _resolver);\n\n    // Logged when the TTL of a node changes\n    event NewTTL(bytes32 indexed _node, uint64 _ttl);\n\n    // Permits modifications only by the owner of the specified node.\n    modifier only_owner(bytes32 _node) {\n        require(records[_node].owner == msg.sender, \"ENSTest: this method needs to be called by the owner of the node\");\n        _;\n    }\n\n    /**\n     * Constructs a new ENS registrar.\n     */\n    constructor() public {\n        records[bytes32(0)].owner = msg.sender;\n    }\n\n    /**\n     * Returns the address that owns the specified node.\n     */\n    function owner(bytes32 _node) public view returns (address) {\n        return records[_node].owner;\n    }\n\n    /**\n     * Returns the address of the resolver for the specified node.\n     */\n    function resolver(bytes32 _node) public view returns (address) {\n        return records[_node].resolver;\n    }\n\n    /**\n     * Returns the TTL of a node, and any records associated with it.\n     */\n    function ttl(bytes32 _node) public view returns (uint64) {\n        return records[_node].ttl;\n    }\n\n    /**\n     * Transfers ownership of a node to a new address. May only be called by the current\n     * owner of the node.\n     * @param _node The node to transfer ownership of.\n     * @param _owner The address of the new owner.\n     */\n    function setOwner(bytes32 _node, address _owner) public only_owner(_node) {\n        emit Transfer(_node, _owner);\n        records[_node].owner = _owner;\n    }\n\n    /**\n     * Transfers ownership of a subnode sha3(node, label) to a new address. May only be\n     * called by the owner of the parent node.\n     * @param _node The parent node.\n     * @param _label The hash of the label specifying the subnode.\n     * @param _owner The address of the new owner.\n     */\n    function setSubnodeOwner(bytes32 _node, bytes32 _label, address _owner) public only_owner(_node) {\n        bytes32 subnode = keccak256(abi.encodePacked(_node, _label));\n        emit NewOwner(_node, _label, _owner);\n        records[subnode].owner = _owner;\n    }\n\n    /**\n     * Sets the resolver address for the specified node.\n     * @param _node The node to update.\n     * @param _resolver The address of the resolver.\n     */\n    function setResolver(bytes32 _node, address _resolver) public only_owner(_node) {\n        emit NewResolver(_node, _resolver);\n        records[_node].resolver = _resolver;\n    }\n\n    /**\n     * Sets the TTL for the specified node.\n     * @param _node The node to update.\n     * @param _ttl The TTL in seconds.\n     */\n    function setTTL(bytes32 _node, uint64 _ttl) public only_owner(_node) {\n        emit NewTTL(_node, _ttl);\n        records[_node].ttl = _ttl;\n    }\n}\n",
  "sourcePath": "/Users/sh/Dev/clients/0trust/authereum/monorepo/packages/contracts/contracts/test/PublicENSRegistry.sol",
  "ast": {
    "absolutePath": "/Users/sh/Dev/clients/0trust/authereum/monorepo/packages/contracts/contracts/test/PublicENSRegistry.sol",
    "exportedSymbols": {
      "PublicENSRegistry": [
        2264
      ]
    },
    "id": 2265,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 2048,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".8"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:11"
      },
      {
        "absolutePath": "/Users/sh/Dev/clients/0trust/authereum/monorepo/packages/contracts/contracts/ens/ENS.sol",
        "file": "../ens/ENS.sol",
        "id": 2049,
        "nodeType": "ImportDirective",
        "scope": 2265,
        "sourceUnit": 1944,
        "src": "25:24:11",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2050,
              "name": "ENSRegistry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1883,
              "src": "120:11:11",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ENSRegistry_$1883",
                "typeString": "contract ENSRegistry"
              }
            },
            "id": 2051,
            "nodeType": "InheritanceSpecifier",
            "src": "120:11:11"
          }
        ],
        "contractDependencies": [
          1883
        ],
        "contractKind": "contract",
        "documentation": "ENS registry test contract.",
        "fullyImplemented": true,
        "id": 2264,
        "linearizedBaseContracts": [
          2264,
          1883
        ],
        "name": "PublicENSRegistry",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "canonicalName": "PublicENSRegistry.Record",
            "id": 2058,
            "members": [
              {
                "constant": false,
                "id": 2053,
                "name": "owner",
                "nodeType": "VariableDeclaration",
                "scope": 2058,
                "src": "163:13:11",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 2052,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "163:7:11",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2055,
                "name": "resolver",
                "nodeType": "VariableDeclaration",
                "scope": 2058,
                "src": "186:16:11",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 2054,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "186:7:11",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2057,
                "name": "ttl",
                "nodeType": "VariableDeclaration",
                "scope": 2058,
                "src": "212:10:11",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint64",
                  "typeString": "uint64"
                },
                "typeName": {
                  "id": 2056,
                  "name": "uint64",
                  "nodeType": "ElementaryTypeName",
                  "src": "212:6:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Record",
            "nodeType": "StructDefinition",
            "scope": 2264,
            "src": "139:90:11",
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2062,
            "name": "records",
            "nodeType": "VariableDeclaration",
            "scope": 2264,
            "src": "235:32:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$2058_storage_$",
              "typeString": "mapping(bytes32 => struct PublicENSRegistry.Record)"
            },
            "typeName": {
              "id": 2061,
              "keyType": {
                "id": 2059,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "243:7:11",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "235:24:11",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$2058_storage_$",
                "typeString": "mapping(bytes32 => struct PublicENSRegistry.Record)"
              },
              "valueType": {
                "contractScope": null,
                "id": 2060,
                "name": "Record",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 2058,
                "src": "252:6:11",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Record_$2058_storage_ptr",
                  "typeString": "struct PublicENSRegistry.Record"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2070,
            "name": "NewOwner",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2069,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2064,
                  "indexed": true,
                  "name": "_node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2070,
                  "src": "362:21:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2063,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "362:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2066,
                  "indexed": true,
                  "name": "_label",
                  "nodeType": "VariableDeclaration",
                  "scope": 2070,
                  "src": "385:22:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2065,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "385:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2068,
                  "indexed": false,
                  "name": "_owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 2070,
                  "src": "409:14:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2067,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "409:7:11",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "361:63:11"
            },
            "src": "347:78:11"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2076,
            "name": "Transfer",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2075,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2072,
                  "indexed": true,
                  "name": "_node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2076,
                  "src": "523:21:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2071,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "523:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2074,
                  "indexed": false,
                  "name": "_owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 2076,
                  "src": "546:14:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2073,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "546:7:11",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "522:39:11"
            },
            "src": "508:54:11"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2082,
            "name": "NewResolver",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2081,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2078,
                  "indexed": true,
                  "name": "_node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2082,
                  "src": "638:21:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2077,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "638:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2080,
                  "indexed": false,
                  "name": "_resolver",
                  "nodeType": "VariableDeclaration",
                  "scope": 2082,
                  "src": "661:17:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2079,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "661:7:11",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "637:42:11"
            },
            "src": "620:60:11"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2088,
            "name": "NewTTL",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2087,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2084,
                  "indexed": true,
                  "name": "_node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2088,
                  "src": "744:21:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2083,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "744:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2086,
                  "indexed": false,
                  "name": "_ttl",
                  "nodeType": "VariableDeclaration",
                  "scope": 2088,
                  "src": "767:11:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 2085,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "767:6:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "743:36:11"
            },
            "src": "731:49:11"
          },
          {
            "body": {
              "id": 2104,
              "nodeType": "Block",
              "src": "891:139:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 2099,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2093,
                              "name": "records",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2062,
                              "src": "909:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$2058_storage_$",
                                "typeString": "mapping(bytes32 => struct PublicENSRegistry.Record storage ref)"
                              }
                            },
                            "id": 2095,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2094,
                              "name": "_node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2090,
                              "src": "917:5:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "909:14:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Record_$2058_storage",
                              "typeString": "struct PublicENSRegistry.Record storage ref"
                            }
                          },
                          "id": 2096,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "owner",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2053,
                          "src": "909:20:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2097,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4696,
                            "src": "933:3:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 2098,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "933:10:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "909:34:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "454e53546573743a2074686973206d6574686f64206e6565647320746f2062652063616c6c656420627920746865206f776e6572206f6620746865206e6f6465",
                        "id": 2100,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "945:66:11",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ba21eecd1b97539572c443b60c8b5a2f192cd1dd1da3a026bed1357849336003",
                          "typeString": "literal_string \"ENSTest: this method needs to be called by the owner of the node\""
                        },
                        "value": "ENSTest: this method needs to be called by the owner of the node"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ba21eecd1b97539572c443b60c8b5a2f192cd1dd1da3a026bed1357849336003",
                          "typeString": "literal_string \"ENSTest: this method needs to be called by the owner of the node\""
                        }
                      ],
                      "id": 2092,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4699,
                        4700
                      ],
                      "referencedDeclaration": 4700,
                      "src": "901:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2101,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "901:111:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2102,
                  "nodeType": "ExpressionStatement",
                  "src": "901:111:11"
                },
                {
                  "id": 2103,
                  "nodeType": "PlaceholderStatement",
                  "src": "1022:1:11"
                }
              ]
            },
            "documentation": null,
            "id": 2105,
            "name": "only_owner",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 2091,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2090,
                  "name": "_node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2105,
                  "src": "876:13:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2089,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "876:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "875:15:11"
            },
            "src": "856:174:11",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2118,
              "nodeType": "Block",
              "src": "1112:55:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2116,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2108,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2062,
                          "src": "1122:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$2058_storage_$",
                            "typeString": "mapping(bytes32 => struct PublicENSRegistry.Record storage ref)"
                          }
                        },
                        "id": 2112,
                        "indexExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 2110,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1138:1:11",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 2109,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1130:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes32_$",
                              "typeString": "type(bytes32)"
                            },
                            "typeName": "bytes32"
                          },
                          "id": 2111,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1130:10:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1122:19:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$2058_storage",
                          "typeString": "struct PublicENSRegistry.Record storage ref"
                        }
                      },
                      "id": 2113,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "owner",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2053,
                      "src": "1122:25:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2114,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4696,
                        "src": "1150:3:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 2115,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "1150:10:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "1122:38:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2117,
                  "nodeType": "ExpressionStatement",
                  "src": "1122:38:11"
                }
              ]
            },
            "documentation": "Constructs a new ENS registrar.",
            "id": 2119,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2106,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1102:2:11"
            },
            "returnParameters": {
              "id": 2107,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1112:0:11"
            },
            "scope": 2264,
            "src": "1091:76:11",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2131,
              "nodeType": "Block",
              "src": "1306:44:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2126,
                        "name": "records",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2062,
                        "src": "1323:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$2058_storage_$",
                          "typeString": "mapping(bytes32 => struct PublicENSRegistry.Record storage ref)"
                        }
                      },
                      "id": 2128,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2127,
                        "name": "_node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2121,
                        "src": "1331:5:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "1323:14:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Record_$2058_storage",
                        "typeString": "struct PublicENSRegistry.Record storage ref"
                      }
                    },
                    "id": 2129,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "owner",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 2053,
                    "src": "1323:20:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 2125,
                  "id": 2130,
                  "nodeType": "Return",
                  "src": "1316:27:11"
                }
              ]
            },
            "documentation": "Returns the address that owns the specified node.",
            "id": 2132,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "owner",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2122,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2121,
                  "name": "_node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2132,
                  "src": "1261:13:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2120,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1261:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1260:15:11"
            },
            "returnParameters": {
              "id": 2125,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2124,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2132,
                  "src": "1297:7:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2123,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1297:7:11",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1296:9:11"
            },
            "scope": 2264,
            "src": "1246:104:11",
            "stateMutability": "view",
            "superFunction": 1838,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2144,
              "nodeType": "Block",
              "src": "1502:47:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2139,
                        "name": "records",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2062,
                        "src": "1519:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$2058_storage_$",
                          "typeString": "mapping(bytes32 => struct PublicENSRegistry.Record storage ref)"
                        }
                      },
                      "id": 2141,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2140,
                        "name": "_node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2134,
                        "src": "1527:5:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "1519:14:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Record_$2058_storage",
                        "typeString": "struct PublicENSRegistry.Record storage ref"
                      }
                    },
                    "id": 2142,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "resolver",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 2055,
                    "src": "1519:23:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 2138,
                  "id": 2143,
                  "nodeType": "Return",
                  "src": "1512:30:11"
                }
              ]
            },
            "documentation": "Returns the address of the resolver for the specified node.",
            "id": 2145,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "resolver",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2135,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2134,
                  "name": "_node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2145,
                  "src": "1457:13:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2133,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1457:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1456:15:11"
            },
            "returnParameters": {
              "id": 2138,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2137,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2145,
                  "src": "1493:7:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2136,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1493:7:11",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1492:9:11"
            },
            "scope": 2264,
            "src": "1439:110:11",
            "stateMutability": "view",
            "superFunction": 1845,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2157,
              "nodeType": "Block",
              "src": "1698:42:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2152,
                        "name": "records",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2062,
                        "src": "1715:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$2058_storage_$",
                          "typeString": "mapping(bytes32 => struct PublicENSRegistry.Record storage ref)"
                        }
                      },
                      "id": 2154,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2153,
                        "name": "_node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2147,
                        "src": "1723:5:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "1715:14:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Record_$2058_storage",
                        "typeString": "struct PublicENSRegistry.Record storage ref"
                      }
                    },
                    "id": 2155,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "ttl",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 2057,
                    "src": "1715:18:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "functionReturnParameters": 2151,
                  "id": 2156,
                  "nodeType": "Return",
                  "src": "1708:25:11"
                }
              ]
            },
            "documentation": "Returns the TTL of a node, and any records associated with it.",
            "id": 2158,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "ttl",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2148,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2147,
                  "name": "_node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2158,
                  "src": "1654:13:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2146,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1654:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1653:15:11"
            },
            "returnParameters": {
              "id": 2151,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2150,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2158,
                  "src": "1690:6:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 2149,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "1690:6:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1689:8:11"
            },
            "scope": 2264,
            "src": "1641:99:11",
            "stateMutability": "view",
            "superFunction": 1852,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2180,
              "nodeType": "Block",
              "src": "2057:84:11",
              "statements": [
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2169,
                        "name": "_node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2160,
                        "src": "2081:5:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2170,
                        "name": "_owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2162,
                        "src": "2088:6:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 2168,
                      "name": "Transfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2076,
                      "src": "2072:8:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address)"
                      }
                    },
                    "id": 2171,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2072:23:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2172,
                  "nodeType": "EmitStatement",
                  "src": "2067:28:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2178,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2173,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2062,
                          "src": "2105:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$2058_storage_$",
                            "typeString": "mapping(bytes32 => struct PublicENSRegistry.Record storage ref)"
                          }
                        },
                        "id": 2175,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2174,
                          "name": "_node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2160,
                          "src": "2113:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2105:14:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$2058_storage",
                          "typeString": "struct PublicENSRegistry.Record storage ref"
                        }
                      },
                      "id": 2176,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "owner",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2053,
                      "src": "2105:20:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2177,
                      "name": "_owner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2162,
                      "src": "2128:6:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2105:29:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2179,
                  "nodeType": "ExpressionStatement",
                  "src": "2105:29:11"
                }
              ]
            },
            "documentation": "Transfers ownership of a node to a new address. May only be called by the current\nowner of the node.\n@param _node The node to transfer ownership of.\n@param _owner The address of the new owner.",
            "id": 2181,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2165,
                    "name": "_node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2160,
                    "src": "2050:5:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 2166,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2164,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2105,
                  "src": "2039:10:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2039:17:11"
              }
            ],
            "name": "setOwner",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2163,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2160,
                  "name": "_node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2181,
                  "src": "2001:13:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2159,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2001:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2162,
                  "name": "_owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 2181,
                  "src": "2016:14:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2161,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2016:7:11",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2000:31:11"
            },
            "returnParameters": {
              "id": 2167,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2057:0:11"
            },
            "scope": 2264,
            "src": "1983:158:11",
            "stateMutability": "nonpayable",
            "superFunction": 1859,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2216,
              "nodeType": "Block",
              "src": "2550:164:11",
              "statements": [
                {
                  "assignments": [
                    2194
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2194,
                      "name": "subnode",
                      "nodeType": "VariableDeclaration",
                      "scope": 2216,
                      "src": "2560:15:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 2193,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2560:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2202,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2198,
                            "name": "_node",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2183,
                            "src": "2605:5:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2199,
                            "name": "_label",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2185,
                            "src": "2612:6:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2196,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4683,
                            "src": "2588:3:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 2197,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2588:16:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 2200,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2588:31:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 2195,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4690,
                      "src": "2578:9:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 2201,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2578:42:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2560:60:11"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2204,
                        "name": "_node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2183,
                        "src": "2644:5:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2205,
                        "name": "_label",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2185,
                        "src": "2651:6:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2206,
                        "name": "_owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2187,
                        "src": "2659:6:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 2203,
                      "name": "NewOwner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2070,
                      "src": "2635:8:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,bytes32,address)"
                      }
                    },
                    "id": 2207,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2635:31:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2208,
                  "nodeType": "EmitStatement",
                  "src": "2630:36:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2214,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2209,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2062,
                          "src": "2676:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$2058_storage_$",
                            "typeString": "mapping(bytes32 => struct PublicENSRegistry.Record storage ref)"
                          }
                        },
                        "id": 2211,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2210,
                          "name": "subnode",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2194,
                          "src": "2684:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2676:16:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$2058_storage",
                          "typeString": "struct PublicENSRegistry.Record storage ref"
                        }
                      },
                      "id": 2212,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "owner",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2053,
                      "src": "2676:22:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2213,
                      "name": "_owner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2187,
                      "src": "2701:6:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2676:31:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2215,
                  "nodeType": "ExpressionStatement",
                  "src": "2676:31:11"
                }
              ]
            },
            "documentation": "Transfers ownership of a subnode sha3(node, label) to a new address. May only be\ncalled by the owner of the parent node.\n@param _node The parent node.\n@param _label The hash of the label specifying the subnode.\n@param _owner The address of the new owner.",
            "id": 2217,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2190,
                    "name": "_node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2183,
                    "src": "2543:5:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 2191,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2189,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2105,
                  "src": "2532:10:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2532:17:11"
              }
            ],
            "name": "setSubnodeOwner",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2188,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2183,
                  "name": "_node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2217,
                  "src": "2478:13:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2182,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2478:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2185,
                  "name": "_label",
                  "nodeType": "VariableDeclaration",
                  "scope": 2217,
                  "src": "2493:14:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2184,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2493:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2187,
                  "name": "_owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 2217,
                  "src": "2509:14:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2186,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2509:7:11",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2477:47:11"
            },
            "returnParameters": {
              "id": 2192,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2550:0:11"
            },
            "scope": 2264,
            "src": "2453:261:11",
            "stateMutability": "nonpayable",
            "superFunction": 1868,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2239,
              "nodeType": "Block",
              "src": "2966:96:11",
              "statements": [
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2228,
                        "name": "_node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2219,
                        "src": "2993:5:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2229,
                        "name": "_resolver",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2221,
                        "src": "3000:9:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 2227,
                      "name": "NewResolver",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2082,
                      "src": "2981:11:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address)"
                      }
                    },
                    "id": 2230,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2981:29:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2231,
                  "nodeType": "EmitStatement",
                  "src": "2976:34:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2237,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2232,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2062,
                          "src": "3020:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$2058_storage_$",
                            "typeString": "mapping(bytes32 => struct PublicENSRegistry.Record storage ref)"
                          }
                        },
                        "id": 2234,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2233,
                          "name": "_node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2219,
                          "src": "3028:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3020:14:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$2058_storage",
                          "typeString": "struct PublicENSRegistry.Record storage ref"
                        }
                      },
                      "id": 2235,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "resolver",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2055,
                      "src": "3020:23:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2236,
                      "name": "_resolver",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2221,
                      "src": "3046:9:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "3020:35:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2238,
                  "nodeType": "ExpressionStatement",
                  "src": "3020:35:11"
                }
              ]
            },
            "documentation": "Sets the resolver address for the specified node.\n@param _node The node to update.\n@param _resolver The address of the resolver.",
            "id": 2240,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2224,
                    "name": "_node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2219,
                    "src": "2959:5:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 2225,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2223,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2105,
                  "src": "2948:10:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2948:17:11"
              }
            ],
            "name": "setResolver",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2222,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2219,
                  "name": "_node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2240,
                  "src": "2907:13:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2218,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2907:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2221,
                  "name": "_resolver",
                  "nodeType": "VariableDeclaration",
                  "scope": 2240,
                  "src": "2922:17:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2220,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2922:7:11",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2906:34:11"
            },
            "returnParameters": {
              "id": 2226,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2966:0:11"
            },
            "scope": 2264,
            "src": "2886:176:11",
            "stateMutability": "nonpayable",
            "superFunction": 1875,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2262,
              "nodeType": "Block",
              "src": "3276:76:11",
              "statements": [
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2251,
                        "name": "_node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2242,
                        "src": "3298:5:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2252,
                        "name": "_ttl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2244,
                        "src": "3305:4:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      ],
                      "id": 2250,
                      "name": "NewTTL",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2088,
                      "src": "3291:6:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint64_$returns$__$",
                        "typeString": "function (bytes32,uint64)"
                      }
                    },
                    "id": 2253,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3291:19:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2254,
                  "nodeType": "EmitStatement",
                  "src": "3286:24:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2260,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2255,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2062,
                          "src": "3320:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$2058_storage_$",
                            "typeString": "mapping(bytes32 => struct PublicENSRegistry.Record storage ref)"
                          }
                        },
                        "id": 2257,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2256,
                          "name": "_node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2242,
                          "src": "3328:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3320:14:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$2058_storage",
                          "typeString": "struct PublicENSRegistry.Record storage ref"
                        }
                      },
                      "id": 2258,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "ttl",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2057,
                      "src": "3320:18:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2259,
                      "name": "_ttl",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2244,
                      "src": "3341:4:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "3320:25:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 2261,
                  "nodeType": "ExpressionStatement",
                  "src": "3320:25:11"
                }
              ]
            },
            "documentation": "Sets the TTL for the specified node.\n@param _node The node to update.\n@param _ttl The TTL in seconds.",
            "id": 2263,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2247,
                    "name": "_node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2242,
                    "src": "3269:5:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 2248,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2246,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2105,
                  "src": "3258:10:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3258:17:11"
              }
            ],
            "name": "setTTL",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2245,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2242,
                  "name": "_node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2263,
                  "src": "3223:13:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2241,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3223:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2244,
                  "name": "_ttl",
                  "nodeType": "VariableDeclaration",
                  "scope": 2263,
                  "src": "3238:11:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 2243,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "3238:6:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3222:28:11"
            },
            "returnParameters": {
              "id": 2249,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3276:0:11"
            },
            "scope": 2264,
            "src": "3207:145:11",
            "stateMutability": "nonpayable",
            "superFunction": 1882,
            "visibility": "public"
          }
        ],
        "scope": 2265,
        "src": "90:3264:11"
      }
    ],
    "src": "0:3355:11"
  },
  "legacyAST": {
    "absolutePath": "/Users/sh/Dev/clients/0trust/authereum/monorepo/packages/contracts/contracts/test/PublicENSRegistry.sol",
    "exportedSymbols": {
      "PublicENSRegistry": [
        2264
      ]
    },
    "id": 2265,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 2048,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".8"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:11"
      },
      {
        "absolutePath": "/Users/sh/Dev/clients/0trust/authereum/monorepo/packages/contracts/contracts/ens/ENS.sol",
        "file": "../ens/ENS.sol",
        "id": 2049,
        "nodeType": "ImportDirective",
        "scope": 2265,
        "sourceUnit": 1944,
        "src": "25:24:11",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2050,
              "name": "ENSRegistry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1883,
              "src": "120:11:11",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ENSRegistry_$1883",
                "typeString": "contract ENSRegistry"
              }
            },
            "id": 2051,
            "nodeType": "InheritanceSpecifier",
            "src": "120:11:11"
          }
        ],
        "contractDependencies": [
          1883
        ],
        "contractKind": "contract",
        "documentation": "ENS registry test contract.",
        "fullyImplemented": true,
        "id": 2264,
        "linearizedBaseContracts": [
          2264,
          1883
        ],
        "name": "PublicENSRegistry",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "canonicalName": "PublicENSRegistry.Record",
            "id": 2058,
            "members": [
              {
                "constant": false,
                "id": 2053,
                "name": "owner",
                "nodeType": "VariableDeclaration",
                "scope": 2058,
                "src": "163:13:11",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 2052,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "163:7:11",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2055,
                "name": "resolver",
                "nodeType": "VariableDeclaration",
                "scope": 2058,
                "src": "186:16:11",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 2054,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "186:7:11",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2057,
                "name": "ttl",
                "nodeType": "VariableDeclaration",
                "scope": 2058,
                "src": "212:10:11",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint64",
                  "typeString": "uint64"
                },
                "typeName": {
                  "id": 2056,
                  "name": "uint64",
                  "nodeType": "ElementaryTypeName",
                  "src": "212:6:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Record",
            "nodeType": "StructDefinition",
            "scope": 2264,
            "src": "139:90:11",
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2062,
            "name": "records",
            "nodeType": "VariableDeclaration",
            "scope": 2264,
            "src": "235:32:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$2058_storage_$",
              "typeString": "mapping(bytes32 => struct PublicENSRegistry.Record)"
            },
            "typeName": {
              "id": 2061,
              "keyType": {
                "id": 2059,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "243:7:11",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "235:24:11",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$2058_storage_$",
                "typeString": "mapping(bytes32 => struct PublicENSRegistry.Record)"
              },
              "valueType": {
                "contractScope": null,
                "id": 2060,
                "name": "Record",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 2058,
                "src": "252:6:11",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Record_$2058_storage_ptr",
                  "typeString": "struct PublicENSRegistry.Record"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2070,
            "name": "NewOwner",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2069,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2064,
                  "indexed": true,
                  "name": "_node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2070,
                  "src": "362:21:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2063,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "362:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2066,
                  "indexed": true,
                  "name": "_label",
                  "nodeType": "VariableDeclaration",
                  "scope": 2070,
                  "src": "385:22:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2065,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "385:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2068,
                  "indexed": false,
                  "name": "_owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 2070,
                  "src": "409:14:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2067,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "409:7:11",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "361:63:11"
            },
            "src": "347:78:11"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2076,
            "name": "Transfer",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2075,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2072,
                  "indexed": true,
                  "name": "_node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2076,
                  "src": "523:21:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2071,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "523:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2074,
                  "indexed": false,
                  "name": "_owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 2076,
                  "src": "546:14:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2073,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "546:7:11",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "522:39:11"
            },
            "src": "508:54:11"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2082,
            "name": "NewResolver",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2081,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2078,
                  "indexed": true,
                  "name": "_node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2082,
                  "src": "638:21:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2077,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "638:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2080,
                  "indexed": false,
                  "name": "_resolver",
                  "nodeType": "VariableDeclaration",
                  "scope": 2082,
                  "src": "661:17:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2079,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "661:7:11",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "637:42:11"
            },
            "src": "620:60:11"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2088,
            "name": "NewTTL",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2087,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2084,
                  "indexed": true,
                  "name": "_node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2088,
                  "src": "744:21:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2083,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "744:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2086,
                  "indexed": false,
                  "name": "_ttl",
                  "nodeType": "VariableDeclaration",
                  "scope": 2088,
                  "src": "767:11:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 2085,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "767:6:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "743:36:11"
            },
            "src": "731:49:11"
          },
          {
            "body": {
              "id": 2104,
              "nodeType": "Block",
              "src": "891:139:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 2099,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2093,
                              "name": "records",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2062,
                              "src": "909:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$2058_storage_$",
                                "typeString": "mapping(bytes32 => struct PublicENSRegistry.Record storage ref)"
                              }
                            },
                            "id": 2095,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2094,
                              "name": "_node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2090,
                              "src": "917:5:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "909:14:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Record_$2058_storage",
                              "typeString": "struct PublicENSRegistry.Record storage ref"
                            }
                          },
                          "id": 2096,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "owner",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2053,
                          "src": "909:20:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2097,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4696,
                            "src": "933:3:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 2098,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "933:10:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "909:34:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "454e53546573743a2074686973206d6574686f64206e6565647320746f2062652063616c6c656420627920746865206f776e6572206f6620746865206e6f6465",
                        "id": 2100,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "945:66:11",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ba21eecd1b97539572c443b60c8b5a2f192cd1dd1da3a026bed1357849336003",
                          "typeString": "literal_string \"ENSTest: this method needs to be called by the owner of the node\""
                        },
                        "value": "ENSTest: this method needs to be called by the owner of the node"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ba21eecd1b97539572c443b60c8b5a2f192cd1dd1da3a026bed1357849336003",
                          "typeString": "literal_string \"ENSTest: this method needs to be called by the owner of the node\""
                        }
                      ],
                      "id": 2092,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4699,
                        4700
                      ],
                      "referencedDeclaration": 4700,
                      "src": "901:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2101,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "901:111:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2102,
                  "nodeType": "ExpressionStatement",
                  "src": "901:111:11"
                },
                {
                  "id": 2103,
                  "nodeType": "PlaceholderStatement",
                  "src": "1022:1:11"
                }
              ]
            },
            "documentation": null,
            "id": 2105,
            "name": "only_owner",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 2091,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2090,
                  "name": "_node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2105,
                  "src": "876:13:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2089,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "876:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "875:15:11"
            },
            "src": "856:174:11",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2118,
              "nodeType": "Block",
              "src": "1112:55:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2116,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2108,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2062,
                          "src": "1122:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$2058_storage_$",
                            "typeString": "mapping(bytes32 => struct PublicENSRegistry.Record storage ref)"
                          }
                        },
                        "id": 2112,
                        "indexExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 2110,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1138:1:11",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 2109,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1130:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes32_$",
                              "typeString": "type(bytes32)"
                            },
                            "typeName": "bytes32"
                          },
                          "id": 2111,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1130:10:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1122:19:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$2058_storage",
                          "typeString": "struct PublicENSRegistry.Record storage ref"
                        }
                      },
                      "id": 2113,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "owner",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2053,
                      "src": "1122:25:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2114,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4696,
                        "src": "1150:3:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 2115,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "1150:10:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "1122:38:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2117,
                  "nodeType": "ExpressionStatement",
                  "src": "1122:38:11"
                }
              ]
            },
            "documentation": "Constructs a new ENS registrar.",
            "id": 2119,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2106,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1102:2:11"
            },
            "returnParameters": {
              "id": 2107,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1112:0:11"
            },
            "scope": 2264,
            "src": "1091:76:11",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2131,
              "nodeType": "Block",
              "src": "1306:44:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2126,
                        "name": "records",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2062,
                        "src": "1323:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$2058_storage_$",
                          "typeString": "mapping(bytes32 => struct PublicENSRegistry.Record storage ref)"
                        }
                      },
                      "id": 2128,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2127,
                        "name": "_node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2121,
                        "src": "1331:5:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "1323:14:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Record_$2058_storage",
                        "typeString": "struct PublicENSRegistry.Record storage ref"
                      }
                    },
                    "id": 2129,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "owner",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 2053,
                    "src": "1323:20:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 2125,
                  "id": 2130,
                  "nodeType": "Return",
                  "src": "1316:27:11"
                }
              ]
            },
            "documentation": "Returns the address that owns the specified node.",
            "id": 2132,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "owner",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2122,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2121,
                  "name": "_node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2132,
                  "src": "1261:13:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2120,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1261:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1260:15:11"
            },
            "returnParameters": {
              "id": 2125,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2124,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2132,
                  "src": "1297:7:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2123,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1297:7:11",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1296:9:11"
            },
            "scope": 2264,
            "src": "1246:104:11",
            "stateMutability": "view",
            "superFunction": 1838,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2144,
              "nodeType": "Block",
              "src": "1502:47:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2139,
                        "name": "records",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2062,
                        "src": "1519:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$2058_storage_$",
                          "typeString": "mapping(bytes32 => struct PublicENSRegistry.Record storage ref)"
                        }
                      },
                      "id": 2141,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2140,
                        "name": "_node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2134,
                        "src": "1527:5:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "1519:14:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Record_$2058_storage",
                        "typeString": "struct PublicENSRegistry.Record storage ref"
                      }
                    },
                    "id": 2142,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "resolver",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 2055,
                    "src": "1519:23:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 2138,
                  "id": 2143,
                  "nodeType": "Return",
                  "src": "1512:30:11"
                }
              ]
            },
            "documentation": "Returns the address of the resolver for the specified node.",
            "id": 2145,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "resolver",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2135,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2134,
                  "name": "_node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2145,
                  "src": "1457:13:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2133,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1457:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1456:15:11"
            },
            "returnParameters": {
              "id": 2138,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2137,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2145,
                  "src": "1493:7:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2136,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1493:7:11",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1492:9:11"
            },
            "scope": 2264,
            "src": "1439:110:11",
            "stateMutability": "view",
            "superFunction": 1845,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2157,
              "nodeType": "Block",
              "src": "1698:42:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2152,
                        "name": "records",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2062,
                        "src": "1715:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$2058_storage_$",
                          "typeString": "mapping(bytes32 => struct PublicENSRegistry.Record storage ref)"
                        }
                      },
                      "id": 2154,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2153,
                        "name": "_node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2147,
                        "src": "1723:5:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "1715:14:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Record_$2058_storage",
                        "typeString": "struct PublicENSRegistry.Record storage ref"
                      }
                    },
                    "id": 2155,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "ttl",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 2057,
                    "src": "1715:18:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "functionReturnParameters": 2151,
                  "id": 2156,
                  "nodeType": "Return",
                  "src": "1708:25:11"
                }
              ]
            },
            "documentation": "Returns the TTL of a node, and any records associated with it.",
            "id": 2158,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "ttl",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2148,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2147,
                  "name": "_node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2158,
                  "src": "1654:13:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2146,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1654:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1653:15:11"
            },
            "returnParameters": {
              "id": 2151,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2150,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2158,
                  "src": "1690:6:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 2149,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "1690:6:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1689:8:11"
            },
            "scope": 2264,
            "src": "1641:99:11",
            "stateMutability": "view",
            "superFunction": 1852,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2180,
              "nodeType": "Block",
              "src": "2057:84:11",
              "statements": [
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2169,
                        "name": "_node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2160,
                        "src": "2081:5:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2170,
                        "name": "_owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2162,
                        "src": "2088:6:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 2168,
                      "name": "Transfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2076,
                      "src": "2072:8:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address)"
                      }
                    },
                    "id": 2171,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2072:23:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2172,
                  "nodeType": "EmitStatement",
                  "src": "2067:28:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2178,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2173,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2062,
                          "src": "2105:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$2058_storage_$",
                            "typeString": "mapping(bytes32 => struct PublicENSRegistry.Record storage ref)"
                          }
                        },
                        "id": 2175,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2174,
                          "name": "_node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2160,
                          "src": "2113:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2105:14:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$2058_storage",
                          "typeString": "struct PublicENSRegistry.Record storage ref"
                        }
                      },
                      "id": 2176,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "owner",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2053,
                      "src": "2105:20:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2177,
                      "name": "_owner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2162,
                      "src": "2128:6:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2105:29:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2179,
                  "nodeType": "ExpressionStatement",
                  "src": "2105:29:11"
                }
              ]
            },
            "documentation": "Transfers ownership of a node to a new address. May only be called by the current\nowner of the node.\n@param _node The node to transfer ownership of.\n@param _owner The address of the new owner.",
            "id": 2181,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2165,
                    "name": "_node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2160,
                    "src": "2050:5:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 2166,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2164,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2105,
                  "src": "2039:10:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2039:17:11"
              }
            ],
            "name": "setOwner",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2163,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2160,
                  "name": "_node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2181,
                  "src": "2001:13:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2159,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2001:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2162,
                  "name": "_owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 2181,
                  "src": "2016:14:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2161,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2016:7:11",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2000:31:11"
            },
            "returnParameters": {
              "id": 2167,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2057:0:11"
            },
            "scope": 2264,
            "src": "1983:158:11",
            "stateMutability": "nonpayable",
            "superFunction": 1859,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2216,
              "nodeType": "Block",
              "src": "2550:164:11",
              "statements": [
                {
                  "assignments": [
                    2194
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2194,
                      "name": "subnode",
                      "nodeType": "VariableDeclaration",
                      "scope": 2216,
                      "src": "2560:15:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 2193,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2560:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2202,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2198,
                            "name": "_node",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2183,
                            "src": "2605:5:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2199,
                            "name": "_label",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2185,
                            "src": "2612:6:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2196,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4683,
                            "src": "2588:3:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 2197,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2588:16:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 2200,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2588:31:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 2195,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4690,
                      "src": "2578:9:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 2201,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2578:42:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2560:60:11"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2204,
                        "name": "_node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2183,
                        "src": "2644:5:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2205,
                        "name": "_label",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2185,
                        "src": "2651:6:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2206,
                        "name": "_owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2187,
                        "src": "2659:6:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 2203,
                      "name": "NewOwner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2070,
                      "src": "2635:8:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,bytes32,address)"
                      }
                    },
                    "id": 2207,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2635:31:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2208,
                  "nodeType": "EmitStatement",
                  "src": "2630:36:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2214,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2209,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2062,
                          "src": "2676:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$2058_storage_$",
                            "typeString": "mapping(bytes32 => struct PublicENSRegistry.Record storage ref)"
                          }
                        },
                        "id": 2211,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2210,
                          "name": "subnode",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2194,
                          "src": "2684:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2676:16:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$2058_storage",
                          "typeString": "struct PublicENSRegistry.Record storage ref"
                        }
                      },
                      "id": 2212,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "owner",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2053,
                      "src": "2676:22:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2213,
                      "name": "_owner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2187,
                      "src": "2701:6:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2676:31:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2215,
                  "nodeType": "ExpressionStatement",
                  "src": "2676:31:11"
                }
              ]
            },
            "documentation": "Transfers ownership of a subnode sha3(node, label) to a new address. May only be\ncalled by the owner of the parent node.\n@param _node The parent node.\n@param _label The hash of the label specifying the subnode.\n@param _owner The address of the new owner.",
            "id": 2217,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2190,
                    "name": "_node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2183,
                    "src": "2543:5:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 2191,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2189,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2105,
                  "src": "2532:10:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2532:17:11"
              }
            ],
            "name": "setSubnodeOwner",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2188,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2183,
                  "name": "_node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2217,
                  "src": "2478:13:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2182,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2478:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2185,
                  "name": "_label",
                  "nodeType": "VariableDeclaration",
                  "scope": 2217,
                  "src": "2493:14:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2184,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2493:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2187,
                  "name": "_owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 2217,
                  "src": "2509:14:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2186,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2509:7:11",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2477:47:11"
            },
            "returnParameters": {
              "id": 2192,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2550:0:11"
            },
            "scope": 2264,
            "src": "2453:261:11",
            "stateMutability": "nonpayable",
            "superFunction": 1868,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2239,
              "nodeType": "Block",
              "src": "2966:96:11",
              "statements": [
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2228,
                        "name": "_node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2219,
                        "src": "2993:5:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2229,
                        "name": "_resolver",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2221,
                        "src": "3000:9:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 2227,
                      "name": "NewResolver",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2082,
                      "src": "2981:11:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address)"
                      }
                    },
                    "id": 2230,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2981:29:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2231,
                  "nodeType": "EmitStatement",
                  "src": "2976:34:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2237,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2232,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2062,
                          "src": "3020:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$2058_storage_$",
                            "typeString": "mapping(bytes32 => struct PublicENSRegistry.Record storage ref)"
                          }
                        },
                        "id": 2234,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2233,
                          "name": "_node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2219,
                          "src": "3028:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3020:14:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$2058_storage",
                          "typeString": "struct PublicENSRegistry.Record storage ref"
                        }
                      },
                      "id": 2235,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "resolver",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2055,
                      "src": "3020:23:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2236,
                      "name": "_resolver",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2221,
                      "src": "3046:9:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "3020:35:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2238,
                  "nodeType": "ExpressionStatement",
                  "src": "3020:35:11"
                }
              ]
            },
            "documentation": "Sets the resolver address for the specified node.\n@param _node The node to update.\n@param _resolver The address of the resolver.",
            "id": 2240,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2224,
                    "name": "_node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2219,
                    "src": "2959:5:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 2225,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2223,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2105,
                  "src": "2948:10:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2948:17:11"
              }
            ],
            "name": "setResolver",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2222,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2219,
                  "name": "_node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2240,
                  "src": "2907:13:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2218,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2907:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2221,
                  "name": "_resolver",
                  "nodeType": "VariableDeclaration",
                  "scope": 2240,
                  "src": "2922:17:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2220,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2922:7:11",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2906:34:11"
            },
            "returnParameters": {
              "id": 2226,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2966:0:11"
            },
            "scope": 2264,
            "src": "2886:176:11",
            "stateMutability": "nonpayable",
            "superFunction": 1875,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2262,
              "nodeType": "Block",
              "src": "3276:76:11",
              "statements": [
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2251,
                        "name": "_node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2242,
                        "src": "3298:5:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2252,
                        "name": "_ttl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2244,
                        "src": "3305:4:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      ],
                      "id": 2250,
                      "name": "NewTTL",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2088,
                      "src": "3291:6:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint64_$returns$__$",
                        "typeString": "function (bytes32,uint64)"
                      }
                    },
                    "id": 2253,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3291:19:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2254,
                  "nodeType": "EmitStatement",
                  "src": "3286:24:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2260,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2255,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2062,
                          "src": "3320:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$2058_storage_$",
                            "typeString": "mapping(bytes32 => struct PublicENSRegistry.Record storage ref)"
                          }
                        },
                        "id": 2257,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2256,
                          "name": "_node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2242,
                          "src": "3328:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3320:14:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$2058_storage",
                          "typeString": "struct PublicENSRegistry.Record storage ref"
                        }
                      },
                      "id": 2258,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "ttl",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2057,
                      "src": "3320:18:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2259,
                      "name": "_ttl",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2244,
                      "src": "3341:4:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "3320:25:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 2261,
                  "nodeType": "ExpressionStatement",
                  "src": "3320:25:11"
                }
              ]
            },
            "documentation": "Sets the TTL for the specified node.\n@param _node The node to update.\n@param _ttl The TTL in seconds.",
            "id": 2263,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2247,
                    "name": "_node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2242,
                    "src": "3269:5:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 2248,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2246,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2105,
                  "src": "3258:10:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3258:17:11"
              }
            ],
            "name": "setTTL",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2245,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2242,
                  "name": "_node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2263,
                  "src": "3223:13:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2241,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3223:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2244,
                  "name": "_ttl",
                  "nodeType": "VariableDeclaration",
                  "scope": 2263,
                  "src": "3238:11:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 2243,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "3238:6:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3222:28:11"
            },
            "returnParameters": {
              "id": 2249,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3276:0:11"
            },
            "scope": 2264,
            "src": "3207:145:11",
            "stateMutability": "nonpayable",
            "superFunction": 1882,
            "visibility": "public"
          }
        ],
        "scope": 2265,
        "src": "90:3264:11"
      }
    ],
    "src": "0:3355:11"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.8+commit.23d335f2.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.0.11",
  "updatedAt": "2019-07-09T03:45:29.427Z",
  "devdoc": {
    "methods": {
      "setOwner(bytes32,address)": {
        "params": {
          "_node": "The node to transfer ownership of.",
          "_owner": "The address of the new owner."
        }
      },
      "setResolver(bytes32,address)": {
        "params": {
          "_node": "The node to update.",
          "_resolver": "The address of the resolver."
        }
      },
      "setSubnodeOwner(bytes32,bytes32,address)": {
        "params": {
          "_label": "The hash of the label specifying the subnode.",
          "_node": "The parent node.",
          "_owner": "The address of the new owner."
        }
      },
      "setTTL(bytes32,uint64)": {
        "params": {
          "_node": "The node to update.",
          "_ttl": "The TTL in seconds."
        }
      }
    }
  },
  "userdoc": {
    "methods": {
      "constructor": "Constructs a new ENS registrar.",
      "owner(bytes32)": {
        "notice": "Returns the address that owns the specified node."
      },
      "resolver(bytes32)": {
        "notice": "Returns the address of the resolver for the specified node."
      },
      "setOwner(bytes32,address)": {
        "notice": "Transfers ownership of a node to a new address. May only be called by the current owner of the node."
      },
      "setResolver(bytes32,address)": {
        "notice": "Sets the resolver address for the specified node."
      },
      "setSubnodeOwner(bytes32,bytes32,address)": {
        "notice": "Transfers ownership of a subnode sha3(node, label) to a new address. May only be called by the owner of the parent node."
      },
      "setTTL(bytes32,uint64)": {
        "notice": "Sets the TTL for the specified node."
      },
      "ttl(bytes32)": {
        "notice": "Returns the TTL of a node, and any records associated with it."
      }
    },
    "notice": "ENS registry test contract."
  }
}