{
  "contractName": "ResolverClient",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "resolver",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "key",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "CONTRACT_ADDRESS",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_key",
          "type": "bytes32"
        }
      ],
      "name": "get_contract",
      "outputs": [
        {
          "name": "_contract",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50610312806100206000396000f300608060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806304f3bcec146100675780633943380c146100be5780633f83acff146100f1578063db4ecbc114610162575b600080fd5b34801561007357600080fd5b5061007c6101b9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156100ca57600080fd5b506100d36101de565b60405180826000191660001916815260200191505060405180910390f35b3480156100fd57600080fd5b5061012060048036038101908080356000191690602001909291905050506101e4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561016e57600080fd5b506101776102c0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60015481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633f83acff836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15801561027e57600080fd5b505af1158015610292573d6000803e3d6000fd5b505050506040513d60208110156102a857600080fd5b81019080805190602001909291905050509050919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16815600a165627a7a72305820527367c8c8b3952a08c93c28724cf0f5d2942f3a5167d4f9f782ddc33bf9866b0029",
  "deployedBytecode": "0x608060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806304f3bcec146100675780633943380c146100be5780633f83acff146100f1578063db4ecbc114610162575b600080fd5b34801561007357600080fd5b5061007c6101b9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156100ca57600080fd5b506100d36101de565b60405180826000191660001916815260200191505060405180910390f35b3480156100fd57600080fd5b5061012060048036038101908080356000191690602001909291905050506101e4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561016e57600080fd5b506101776102c0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60015481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633f83acff836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15801561027e57600080fd5b505af1158015610292573d6000803e3d6000fd5b505050506040513d60208110156102a857600080fd5b81019080805190602001909291905050509050919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16815600a165627a7a72305820527367c8c8b3952a08c93c28724cf0f5d2942f3a5167d4f9f782ddc33bf9866b0029",
  "sourceMap": "148:2413:67:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;148:2413:67;;;;;;;",
  "deployedSourceMap": "148:2413:67:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;237:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;237:23:67;;;;;;;;;;;;;;;;;;;;;;;;;;;264:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;264:18:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2380:179;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2380:179:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;344:31;;8:9:-1;5:2;;;30:1;27;20:12;5:2;344:31:67;;;;;;;;;;;;;;;;;;;;;;;;;;;237:23;;;;;;;;;;;;;:::o;264:18::-;;;;:::o;2380:179::-;2470:17;2526:8;;;;;;;;;;;2509:39;;;2549:4;2509:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2509:45:67;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2509:45:67;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2509:45:67;;;;;;;;;;;;;;;;2497:57;;2380:179;;;:::o;344:31::-;;;;;;;;;;;;;:::o",
  "source": "pragma solidity ^0.4.25;\n\nimport \"./ContractResolver.sol\";\nimport \"./ACOwned.sol\";\n\n/// @title Contract Resolver Interface\n/// @author DigixGlobal\n\ncontract ResolverClient {\n\n  /// The address of the resolver contract for this project\n  address public resolver;\n  bytes32 public key;\n\n  /// Make our own address available to us as a constant\n  address public CONTRACT_ADDRESS;\n\n  /// Function modifier to check if msg.sender corresponds to the resolved address of a given key\n  /// @param _contract The resolver key\n  modifier if_sender_is(bytes32 _contract) {\n    require(sender_is(_contract));\n    _;\n  }\n\n  function sender_is(bytes32 _contract) internal view returns (bool _isFrom) {\n    _isFrom = msg.sender == ContractResolver(resolver).get_contract(_contract);\n  }\n\n  modifier if_sender_is_from(bytes32[3] _contracts) {\n    require(sender_is_from(_contracts));\n    _;\n  }\n\n  function sender_is_from(bytes32[3] _contracts) internal view returns (bool _isFrom) {\n    uint256 _n = _contracts.length;\n    for (uint256 i = 0; i < _n; i++) {\n      if (_contracts[i] == bytes32(0x0)) continue;\n      if (msg.sender == ContractResolver(resolver).get_contract(_contracts[i])) {\n        _isFrom = true;\n        break;\n      }\n    }\n  }\n\n  /// Function modifier to check resolver's locking status.\n  modifier unless_resolver_is_locked() {\n    require(is_locked() == false);\n    _;\n  }\n\n  /// @dev Initialize new contract\n  /// @param _key the resolver key for this contract\n  /// @return _success if the initialization is successful\n  function init(bytes32 _key, address _resolver)\n           internal\n           returns (bool _success)\n  {\n    bool _is_locked = ContractResolver(_resolver).locked_forever();\n    if (_is_locked == false) {\n      CONTRACT_ADDRESS = address(this);\n      resolver = _resolver;\n      key = _key;\n      require(ContractResolver(resolver).init_register_contract(key, CONTRACT_ADDRESS));\n      _success = true;\n    }  else {\n      _success = false;\n    }\n  }\n\n  /// @dev Check if resolver is locked\n  /// @return _locked if the resolver is currently locked\n  function is_locked()\n           private\n           view\n           returns (bool _locked)\n  {\n    _locked = ContractResolver(resolver).locked_forever();\n  }\n\n  /// @dev Get the address of a contract\n  /// @param _key the resolver key to look up\n  /// @return _contract the address of the contract\n  function get_contract(bytes32 _key)\n           public\n           view\n           returns (address _contract)\n  {\n    _contract = ContractResolver(resolver).get_contract(_key);\n  }\n}\n",
  "sourcePath": "@digix/cacp-contracts-dao/contracts/ResolverClient.sol",
  "ast": {
    "absolutePath": "@digix/cacp-contracts-dao/contracts/ResolverClient.sol",
    "exportedSymbols": {
      "ResolverClient": [
        18628
      ]
    },
    "id": 18629,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 18421,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".25"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:67"
      },
      {
        "absolutePath": "@digix/cacp-contracts-dao/contracts/ContractResolver.sol",
        "file": "./ContractResolver.sol",
        "id": 18422,
        "nodeType": "ImportDirective",
        "scope": 18629,
        "sourceUnit": 18420,
        "src": "26:32:67",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@digix/cacp-contracts-dao/contracts/ACOwned.sol",
        "file": "./ACOwned.sol",
        "id": 18423,
        "nodeType": "ImportDirective",
        "scope": 18629,
        "sourceUnit": 18253,
        "src": "59:23:67",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": "@title Contract Resolver Interface\n @author DigixGlobal",
        "fullyImplemented": true,
        "id": 18628,
        "linearizedBaseContracts": [
          18628
        ],
        "name": "ResolverClient",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 18425,
            "name": "resolver",
            "nodeType": "VariableDeclaration",
            "scope": 18628,
            "src": "237:23:67",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 18424,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "237:7:67",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 18427,
            "name": "key",
            "nodeType": "VariableDeclaration",
            "scope": 18628,
            "src": "264:18:67",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 18426,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "264:7:67",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 18429,
            "name": "CONTRACT_ADDRESS",
            "nodeType": "VariableDeclaration",
            "scope": 18628,
            "src": "344:31:67",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 18428,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "344:7:67",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 18440,
              "nodeType": "Block",
              "src": "559:47:67",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 18435,
                            "name": "_contract",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18431,
                            "src": "583:9:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 18434,
                          "name": "sender_is",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18461,
                          "src": "573:9:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (bytes32) view returns (bool)"
                          }
                        },
                        "id": 18436,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "573:20:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 18433,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "565:7:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 18437,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "565:29:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18438,
                  "nodeType": "ExpressionStatement",
                  "src": "565:29:67"
                },
                {
                  "id": 18439,
                  "nodeType": "PlaceholderStatement",
                  "src": "600:1:67"
                }
              ]
            },
            "documentation": "Function modifier to check if msg.sender corresponds to the resolved address of a given key\n @param _contract The resolver key",
            "id": 18441,
            "name": "if_sender_is",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 18432,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18431,
                  "name": "_contract",
                  "nodeType": "VariableDeclaration",
                  "scope": 18441,
                  "src": "540:17:67",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 18430,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "540:7:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "539:19:67"
            },
            "src": "518:88:67",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 18460,
              "nodeType": "Block",
              "src": "685:85:67",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18458,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 18448,
                      "name": "_isFrom",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18446,
                      "src": "691:7:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 18457,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 18449,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26182,
                          "src": "701:3:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 18450,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "701:10:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 18455,
                            "name": "_contract",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18443,
                            "src": "755:9:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 18452,
                                "name": "resolver",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18425,
                                "src": "732:8:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 18451,
                              "name": "ContractResolver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18419,
                              "src": "715:16:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_ContractResolver_$18419_$",
                                "typeString": "type(contract ContractResolver)"
                              }
                            },
                            "id": 18453,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "715:26:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ContractResolver_$18419",
                              "typeString": "contract ContractResolver"
                            }
                          },
                          "id": 18454,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "get_contract",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 18418,
                          "src": "715:39:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                            "typeString": "function (bytes32) view external returns (address)"
                          }
                        },
                        "id": 18456,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "715:50:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "src": "701:64:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "691:74:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 18459,
                  "nodeType": "ExpressionStatement",
                  "src": "691:74:67"
                }
              ]
            },
            "documentation": null,
            "id": 18461,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "sender_is",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 18444,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18443,
                  "name": "_contract",
                  "nodeType": "VariableDeclaration",
                  "scope": 18461,
                  "src": "629:17:67",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 18442,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "629:7:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "628:19:67"
            },
            "payable": false,
            "returnParameters": {
              "id": 18447,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18446,
                  "name": "_isFrom",
                  "nodeType": "VariableDeclaration",
                  "scope": 18461,
                  "src": "671:12:67",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18445,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "671:4:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "670:14:67"
            },
            "scope": 18628,
            "src": "610:160:67",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 18474,
              "nodeType": "Block",
              "src": "824:53:67",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 18469,
                            "name": "_contracts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18465,
                            "src": "853:10:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes32_$3_memory_ptr",
                              "typeString": "bytes32[3] memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_array$_t_bytes32_$3_memory_ptr",
                              "typeString": "bytes32[3] memory"
                            }
                          ],
                          "id": 18468,
                          "name": "sender_is_from",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18529,
                          "src": "838:14:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_array$_t_bytes32_$3_memory_ptr_$returns$_t_bool_$",
                            "typeString": "function (bytes32[3] memory) view returns (bool)"
                          }
                        },
                        "id": 18470,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "838:26:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 18467,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "830:7:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 18471,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "830:35:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18472,
                  "nodeType": "ExpressionStatement",
                  "src": "830:35:67"
                },
                {
                  "id": 18473,
                  "nodeType": "PlaceholderStatement",
                  "src": "871:1:67"
                }
              ]
            },
            "documentation": null,
            "id": 18475,
            "name": "if_sender_is_from",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 18466,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18465,
                  "name": "_contracts",
                  "nodeType": "VariableDeclaration",
                  "scope": 18475,
                  "src": "801:21:67",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$3_memory_ptr",
                    "typeString": "bytes32[3]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 18462,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "801:7:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 18464,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "33",
                      "id": 18463,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "809:1:67",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "3"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "801:10:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$3_storage_ptr",
                      "typeString": "bytes32[3]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "800:23:67"
            },
            "src": "774:103:67",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 18528,
              "nodeType": "Block",
              "src": "965:266:67",
              "statements": [
                {
                  "assignments": [
                    18485
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18485,
                      "name": "_n",
                      "nodeType": "VariableDeclaration",
                      "scope": 18529,
                      "src": "971:10:67",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18484,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "971:7:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 18488,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 18486,
                      "name": "_contracts",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18479,
                      "src": "984:10:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$3_memory_ptr",
                        "typeString": "bytes32[3] memory"
                      }
                    },
                    "id": 18487,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "984:17:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "971:30:67"
                },
                {
                  "body": {
                    "id": 18526,
                    "nodeType": "Block",
                    "src": "1040:187:67",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 18505,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 18499,
                              "name": "_contracts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18479,
                              "src": "1052:10:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$3_memory_ptr",
                                "typeString": "bytes32[3] memory"
                              }
                            },
                            "id": 18501,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 18500,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18490,
                              "src": "1063:1:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "1052:13:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "307830",
                                "id": 18503,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1077:3:67",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0x0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 18502,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1069:7:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": "bytes32"
                            },
                            "id": 18504,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1069:12:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "1052:29:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 18507,
                        "nodeType": "IfStatement",
                        "src": "1048:43:67",
                        "trueBody": {
                          "id": 18506,
                          "nodeType": "Continue",
                          "src": "1083:8:67"
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 18518,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18508,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26182,
                              "src": "1103:3:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 18509,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1103:10:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 18514,
                                  "name": "_contracts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18479,
                                  "src": "1157:10:67",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_bytes32_$3_memory_ptr",
                                    "typeString": "bytes32[3] memory"
                                  }
                                },
                                "id": 18516,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 18515,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18490,
                                  "src": "1168:1:67",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "1157:13:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 18511,
                                    "name": "resolver",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18425,
                                    "src": "1134:8:67",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 18510,
                                  "name": "ContractResolver",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18419,
                                  "src": "1117:16:67",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_ContractResolver_$18419_$",
                                    "typeString": "type(contract ContractResolver)"
                                  }
                                },
                                "id": 18512,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1117:26:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ContractResolver_$18419",
                                  "typeString": "contract ContractResolver"
                                }
                              },
                              "id": 18513,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "get_contract",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18418,
                              "src": "1117:39:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                                "typeString": "function (bytes32) view external returns (address)"
                              }
                            },
                            "id": 18517,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1117:54:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1103:68:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 18525,
                        "nodeType": "IfStatement",
                        "src": "1099:122:67",
                        "trueBody": {
                          "id": 18524,
                          "nodeType": "Block",
                          "src": "1173:48:67",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 18521,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 18519,
                                  "name": "_isFrom",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18482,
                                  "src": "1183:7:67",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "74727565",
                                  "id": 18520,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1193:4:67",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "true"
                                },
                                "src": "1183:14:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 18522,
                              "nodeType": "ExpressionStatement",
                              "src": "1183:14:67"
                            },
                            {
                              "id": 18523,
                              "nodeType": "Break",
                              "src": "1207:5:67"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 18495,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 18493,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18490,
                      "src": "1027:1:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 18494,
                      "name": "_n",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18485,
                      "src": "1031:2:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1027:6:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 18527,
                  "initializationExpression": {
                    "assignments": [
                      18490
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 18490,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 18529,
                        "src": "1012:9:67",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18489,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1012:7:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 18492,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 18491,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1024:1:67",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "1012:13:67"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 18497,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "1035:3:67",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 18496,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18490,
                        "src": "1035:1:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 18498,
                    "nodeType": "ExpressionStatement",
                    "src": "1035:3:67"
                  },
                  "nodeType": "ForStatement",
                  "src": "1007:220:67"
                }
              ]
            },
            "documentation": null,
            "id": 18529,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "sender_is_from",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 18480,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18479,
                  "name": "_contracts",
                  "nodeType": "VariableDeclaration",
                  "scope": 18529,
                  "src": "905:21:67",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$3_memory_ptr",
                    "typeString": "bytes32[3]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 18476,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "905:7:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 18478,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "33",
                      "id": 18477,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "913:1:67",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "3"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "905:10:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$3_storage_ptr",
                      "typeString": "bytes32[3]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "904:23:67"
            },
            "payable": false,
            "returnParameters": {
              "id": 18483,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18482,
                  "name": "_isFrom",
                  "nodeType": "VariableDeclaration",
                  "scope": 18529,
                  "src": "951:12:67",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18481,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "951:4:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "950:14:67"
            },
            "scope": 18628,
            "src": "881:350:67",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 18539,
              "nodeType": "Block",
              "src": "1332:47:67",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 18535,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 18532,
                            "name": "is_locked",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18610,
                            "src": "1346:9:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$",
                              "typeString": "function () view returns (bool)"
                            }
                          },
                          "id": 18533,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1346:11:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 18534,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1361:5:67",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "src": "1346:20:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 18531,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "1338:7:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 18536,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1338:29:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18537,
                  "nodeType": "ExpressionStatement",
                  "src": "1338:29:67"
                },
                {
                  "id": 18538,
                  "nodeType": "PlaceholderStatement",
                  "src": "1373:1:67"
                }
              ]
            },
            "documentation": "Function modifier to check resolver's locking status.",
            "id": 18540,
            "name": "unless_resolver_is_locked",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 18530,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1329:2:67"
            },
            "src": "1295:84:67",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 18595,
              "nodeType": "Block",
              "src": "1634:346:67",
              "statements": [
                {
                  "assignments": [
                    18550
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18550,
                      "name": "_is_locked",
                      "nodeType": "VariableDeclaration",
                      "scope": 18596,
                      "src": "1640:15:67",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 18549,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1640:4:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 18556,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 18552,
                            "name": "_resolver",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18544,
                            "src": "1675:9:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 18551,
                          "name": "ContractResolver",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18419,
                          "src": "1658:16:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_ContractResolver_$18419_$",
                            "typeString": "type(contract ContractResolver)"
                          }
                        },
                        "id": 18553,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1658:27:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ContractResolver_$18419",
                          "typeString": "contract ContractResolver"
                        }
                      },
                      "id": 18554,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "locked_forever",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 18284,
                      "src": "1658:42:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_bool_$",
                        "typeString": "function () view external returns (bool)"
                      }
                    },
                    "id": 18555,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1658:44:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1640:62:67"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 18559,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 18557,
                      "name": "_is_locked",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18550,
                      "src": "1712:10:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "66616c7365",
                      "id": 18558,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1726:5:67",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "false"
                    },
                    "src": "1712:19:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 18593,
                    "nodeType": "Block",
                    "src": "1945:31:67",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18591,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 18589,
                            "name": "_success",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18547,
                            "src": "1953:8:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "66616c7365",
                            "id": 18590,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1964:5:67",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          "src": "1953:16:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 18592,
                        "nodeType": "ExpressionStatement",
                        "src": "1953:16:67"
                      }
                    ]
                  },
                  "id": 18594,
                  "nodeType": "IfStatement",
                  "src": "1708:268:67",
                  "trueBody": {
                    "id": 18588,
                    "nodeType": "Block",
                    "src": "1733:205:67",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18564,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 18560,
                            "name": "CONTRACT_ADDRESS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18429,
                            "src": "1741:16:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 18562,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 26217,
                                "src": "1768:4:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ResolverClient_$18628",
                                  "typeString": "contract ResolverClient"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_ResolverClient_$18628",
                                  "typeString": "contract ResolverClient"
                                }
                              ],
                              "id": 18561,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1760:7:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 18563,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1760:13:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1741:32:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 18565,
                        "nodeType": "ExpressionStatement",
                        "src": "1741:32:67"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18568,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 18566,
                            "name": "resolver",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18425,
                            "src": "1781:8:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 18567,
                            "name": "_resolver",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18544,
                            "src": "1792:9:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1781:20:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 18569,
                        "nodeType": "ExpressionStatement",
                        "src": "1781:20:67"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18572,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 18570,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18427,
                            "src": "1809:3:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 18571,
                            "name": "_key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18542,
                            "src": "1815:4:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "1809:10:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 18573,
                        "nodeType": "ExpressionStatement",
                        "src": "1809:10:67"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 18579,
                                  "name": "key",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18427,
                                  "src": "1885:3:67",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 18580,
                                  "name": "CONTRACT_ADDRESS",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18429,
                                  "src": "1890:16:67",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 18576,
                                      "name": "resolver",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18425,
                                      "src": "1852:8:67",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 18575,
                                    "name": "ContractResolver",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18419,
                                    "src": "1835:16:67",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_ContractResolver_$18419_$",
                                      "typeString": "type(contract ContractResolver)"
                                    }
                                  },
                                  "id": 18577,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1835:26:67",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ContractResolver_$18419",
                                    "typeString": "contract ContractResolver"
                                  }
                                },
                                "id": 18578,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "init_register_contract",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 18380,
                                "src": "1835:49:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (bytes32,address) external returns (bool)"
                                }
                              },
                              "id": 18581,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1835:72:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 18574,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              26185,
                              26186
                            ],
                            "referencedDeclaration": 26185,
                            "src": "1827:7:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 18582,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1827:81:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18583,
                        "nodeType": "ExpressionStatement",
                        "src": "1827:81:67"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18586,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 18584,
                            "name": "_success",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18547,
                            "src": "1916:8:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 18585,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1927:4:67",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "1916:15:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 18587,
                        "nodeType": "ExpressionStatement",
                        "src": "1916:15:67"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@dev Initialize new contract\n @param _key the resolver key for this contract\n @return _success if the initialization is successful",
            "id": 18596,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "init",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 18545,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18542,
                  "name": "_key",
                  "nodeType": "VariableDeclaration",
                  "scope": 18596,
                  "src": "1544:12:67",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 18541,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1544:7:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18544,
                  "name": "_resolver",
                  "nodeType": "VariableDeclaration",
                  "scope": 18596,
                  "src": "1558:17:67",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18543,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1558:7:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1543:33:67"
            },
            "payable": false,
            "returnParameters": {
              "id": 18548,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18547,
                  "name": "_success",
                  "nodeType": "VariableDeclaration",
                  "scope": 18596,
                  "src": "1617:13:67",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18546,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1617:4:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1616:15:67"
            },
            "scope": 18628,
            "src": "1530:450:67",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 18609,
              "nodeType": "Block",
              "src": "2173:64:67",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18607,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 18601,
                      "name": "_locked",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18599,
                      "src": "2179:7:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 18603,
                              "name": "resolver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18425,
                              "src": "2206:8:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 18602,
                            "name": "ContractResolver",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18419,
                            "src": "2189:16:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_ContractResolver_$18419_$",
                              "typeString": "type(contract ContractResolver)"
                            }
                          },
                          "id": 18604,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2189:26:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ContractResolver_$18419",
                            "typeString": "contract ContractResolver"
                          }
                        },
                        "id": 18605,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "locked_forever",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 18284,
                        "src": "2189:41:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$__$returns$_t_bool_$",
                          "typeString": "function () view external returns (bool)"
                        }
                      },
                      "id": 18606,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2189:43:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "2179:53:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 18608,
                  "nodeType": "ExpressionStatement",
                  "src": "2179:53:67"
                }
              ]
            },
            "documentation": "@dev Check if resolver is locked\n @return _locked if the resolver is currently locked",
            "id": 18610,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "is_locked",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 18597,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2099:2:67"
            },
            "payable": false,
            "returnParameters": {
              "id": 18600,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18599,
                  "name": "_locked",
                  "nodeType": "VariableDeclaration",
                  "scope": 18610,
                  "src": "2157:12:67",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18598,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2157:4:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2156:14:67"
            },
            "scope": 18628,
            "src": "2081:156:67",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 18626,
              "nodeType": "Block",
              "src": "2491:68:67",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18624,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 18617,
                      "name": "_contract",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18615,
                      "src": "2497:9:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 18622,
                          "name": "_key",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18612,
                          "src": "2549:4:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 18619,
                              "name": "resolver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18425,
                              "src": "2526:8:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 18618,
                            "name": "ContractResolver",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18419,
                            "src": "2509:16:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_ContractResolver_$18419_$",
                              "typeString": "type(contract ContractResolver)"
                            }
                          },
                          "id": 18620,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2509:26:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ContractResolver_$18419",
                            "typeString": "contract ContractResolver"
                          }
                        },
                        "id": 18621,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "get_contract",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 18418,
                        "src": "2509:39:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                          "typeString": "function (bytes32) view external returns (address)"
                        }
                      },
                      "id": 18623,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2509:45:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2497:57:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 18625,
                  "nodeType": "ExpressionStatement",
                  "src": "2497:57:67"
                }
              ]
            },
            "documentation": "@dev Get the address of a contract\n @param _key the resolver key to look up\n @return _contract the address of the contract",
            "id": 18627,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "get_contract",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 18613,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18612,
                  "name": "_key",
                  "nodeType": "VariableDeclaration",
                  "scope": 18627,
                  "src": "2402:12:67",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 18611,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2402:7:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2401:14:67"
            },
            "payable": false,
            "returnParameters": {
              "id": 18616,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18615,
                  "name": "_contract",
                  "nodeType": "VariableDeclaration",
                  "scope": 18627,
                  "src": "2470:17:67",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18614,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2470:7:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2469:19:67"
            },
            "scope": 18628,
            "src": "2380:179:67",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 18629,
        "src": "148:2413:67"
      }
    ],
    "src": "0:2562:67"
  },
  "legacyAST": {
    "absolutePath": "@digix/cacp-contracts-dao/contracts/ResolverClient.sol",
    "exportedSymbols": {
      "ResolverClient": [
        18628
      ]
    },
    "id": 18629,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 18421,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".25"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:67"
      },
      {
        "absolutePath": "@digix/cacp-contracts-dao/contracts/ContractResolver.sol",
        "file": "./ContractResolver.sol",
        "id": 18422,
        "nodeType": "ImportDirective",
        "scope": 18629,
        "sourceUnit": 18420,
        "src": "26:32:67",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@digix/cacp-contracts-dao/contracts/ACOwned.sol",
        "file": "./ACOwned.sol",
        "id": 18423,
        "nodeType": "ImportDirective",
        "scope": 18629,
        "sourceUnit": 18253,
        "src": "59:23:67",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": "@title Contract Resolver Interface\n @author DigixGlobal",
        "fullyImplemented": true,
        "id": 18628,
        "linearizedBaseContracts": [
          18628
        ],
        "name": "ResolverClient",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 18425,
            "name": "resolver",
            "nodeType": "VariableDeclaration",
            "scope": 18628,
            "src": "237:23:67",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 18424,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "237:7:67",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 18427,
            "name": "key",
            "nodeType": "VariableDeclaration",
            "scope": 18628,
            "src": "264:18:67",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 18426,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "264:7:67",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 18429,
            "name": "CONTRACT_ADDRESS",
            "nodeType": "VariableDeclaration",
            "scope": 18628,
            "src": "344:31:67",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 18428,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "344:7:67",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 18440,
              "nodeType": "Block",
              "src": "559:47:67",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 18435,
                            "name": "_contract",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18431,
                            "src": "583:9:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 18434,
                          "name": "sender_is",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18461,
                          "src": "573:9:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (bytes32) view returns (bool)"
                          }
                        },
                        "id": 18436,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "573:20:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 18433,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "565:7:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 18437,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "565:29:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18438,
                  "nodeType": "ExpressionStatement",
                  "src": "565:29:67"
                },
                {
                  "id": 18439,
                  "nodeType": "PlaceholderStatement",
                  "src": "600:1:67"
                }
              ]
            },
            "documentation": "Function modifier to check if msg.sender corresponds to the resolved address of a given key\n @param _contract The resolver key",
            "id": 18441,
            "name": "if_sender_is",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 18432,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18431,
                  "name": "_contract",
                  "nodeType": "VariableDeclaration",
                  "scope": 18441,
                  "src": "540:17:67",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 18430,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "540:7:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "539:19:67"
            },
            "src": "518:88:67",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 18460,
              "nodeType": "Block",
              "src": "685:85:67",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18458,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 18448,
                      "name": "_isFrom",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18446,
                      "src": "691:7:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 18457,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 18449,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26182,
                          "src": "701:3:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 18450,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "701:10:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 18455,
                            "name": "_contract",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18443,
                            "src": "755:9:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 18452,
                                "name": "resolver",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18425,
                                "src": "732:8:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 18451,
                              "name": "ContractResolver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18419,
                              "src": "715:16:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_ContractResolver_$18419_$",
                                "typeString": "type(contract ContractResolver)"
                              }
                            },
                            "id": 18453,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "715:26:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ContractResolver_$18419",
                              "typeString": "contract ContractResolver"
                            }
                          },
                          "id": 18454,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "get_contract",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 18418,
                          "src": "715:39:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                            "typeString": "function (bytes32) view external returns (address)"
                          }
                        },
                        "id": 18456,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "715:50:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "src": "701:64:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "691:74:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 18459,
                  "nodeType": "ExpressionStatement",
                  "src": "691:74:67"
                }
              ]
            },
            "documentation": null,
            "id": 18461,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "sender_is",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 18444,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18443,
                  "name": "_contract",
                  "nodeType": "VariableDeclaration",
                  "scope": 18461,
                  "src": "629:17:67",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 18442,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "629:7:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "628:19:67"
            },
            "payable": false,
            "returnParameters": {
              "id": 18447,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18446,
                  "name": "_isFrom",
                  "nodeType": "VariableDeclaration",
                  "scope": 18461,
                  "src": "671:12:67",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18445,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "671:4:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "670:14:67"
            },
            "scope": 18628,
            "src": "610:160:67",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 18474,
              "nodeType": "Block",
              "src": "824:53:67",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 18469,
                            "name": "_contracts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18465,
                            "src": "853:10:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes32_$3_memory_ptr",
                              "typeString": "bytes32[3] memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_array$_t_bytes32_$3_memory_ptr",
                              "typeString": "bytes32[3] memory"
                            }
                          ],
                          "id": 18468,
                          "name": "sender_is_from",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18529,
                          "src": "838:14:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_array$_t_bytes32_$3_memory_ptr_$returns$_t_bool_$",
                            "typeString": "function (bytes32[3] memory) view returns (bool)"
                          }
                        },
                        "id": 18470,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "838:26:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 18467,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "830:7:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 18471,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "830:35:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18472,
                  "nodeType": "ExpressionStatement",
                  "src": "830:35:67"
                },
                {
                  "id": 18473,
                  "nodeType": "PlaceholderStatement",
                  "src": "871:1:67"
                }
              ]
            },
            "documentation": null,
            "id": 18475,
            "name": "if_sender_is_from",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 18466,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18465,
                  "name": "_contracts",
                  "nodeType": "VariableDeclaration",
                  "scope": 18475,
                  "src": "801:21:67",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$3_memory_ptr",
                    "typeString": "bytes32[3]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 18462,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "801:7:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 18464,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "33",
                      "id": 18463,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "809:1:67",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "3"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "801:10:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$3_storage_ptr",
                      "typeString": "bytes32[3]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "800:23:67"
            },
            "src": "774:103:67",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 18528,
              "nodeType": "Block",
              "src": "965:266:67",
              "statements": [
                {
                  "assignments": [
                    18485
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18485,
                      "name": "_n",
                      "nodeType": "VariableDeclaration",
                      "scope": 18529,
                      "src": "971:10:67",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18484,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "971:7:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 18488,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 18486,
                      "name": "_contracts",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18479,
                      "src": "984:10:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$3_memory_ptr",
                        "typeString": "bytes32[3] memory"
                      }
                    },
                    "id": 18487,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "984:17:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "971:30:67"
                },
                {
                  "body": {
                    "id": 18526,
                    "nodeType": "Block",
                    "src": "1040:187:67",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 18505,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 18499,
                              "name": "_contracts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18479,
                              "src": "1052:10:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$3_memory_ptr",
                                "typeString": "bytes32[3] memory"
                              }
                            },
                            "id": 18501,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 18500,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18490,
                              "src": "1063:1:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "1052:13:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "307830",
                                "id": 18503,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1077:3:67",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0x0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 18502,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1069:7:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": "bytes32"
                            },
                            "id": 18504,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1069:12:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "1052:29:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 18507,
                        "nodeType": "IfStatement",
                        "src": "1048:43:67",
                        "trueBody": {
                          "id": 18506,
                          "nodeType": "Continue",
                          "src": "1083:8:67"
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 18518,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18508,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26182,
                              "src": "1103:3:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 18509,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1103:10:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 18514,
                                  "name": "_contracts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18479,
                                  "src": "1157:10:67",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_bytes32_$3_memory_ptr",
                                    "typeString": "bytes32[3] memory"
                                  }
                                },
                                "id": 18516,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 18515,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18490,
                                  "src": "1168:1:67",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "1157:13:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 18511,
                                    "name": "resolver",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18425,
                                    "src": "1134:8:67",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 18510,
                                  "name": "ContractResolver",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18419,
                                  "src": "1117:16:67",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_ContractResolver_$18419_$",
                                    "typeString": "type(contract ContractResolver)"
                                  }
                                },
                                "id": 18512,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1117:26:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ContractResolver_$18419",
                                  "typeString": "contract ContractResolver"
                                }
                              },
                              "id": 18513,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "get_contract",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18418,
                              "src": "1117:39:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                                "typeString": "function (bytes32) view external returns (address)"
                              }
                            },
                            "id": 18517,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1117:54:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1103:68:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 18525,
                        "nodeType": "IfStatement",
                        "src": "1099:122:67",
                        "trueBody": {
                          "id": 18524,
                          "nodeType": "Block",
                          "src": "1173:48:67",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 18521,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 18519,
                                  "name": "_isFrom",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18482,
                                  "src": "1183:7:67",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "74727565",
                                  "id": 18520,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1193:4:67",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "true"
                                },
                                "src": "1183:14:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 18522,
                              "nodeType": "ExpressionStatement",
                              "src": "1183:14:67"
                            },
                            {
                              "id": 18523,
                              "nodeType": "Break",
                              "src": "1207:5:67"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 18495,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 18493,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18490,
                      "src": "1027:1:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 18494,
                      "name": "_n",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18485,
                      "src": "1031:2:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1027:6:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 18527,
                  "initializationExpression": {
                    "assignments": [
                      18490
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 18490,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 18529,
                        "src": "1012:9:67",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18489,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1012:7:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 18492,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 18491,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1024:1:67",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "1012:13:67"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 18497,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "1035:3:67",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 18496,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18490,
                        "src": "1035:1:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 18498,
                    "nodeType": "ExpressionStatement",
                    "src": "1035:3:67"
                  },
                  "nodeType": "ForStatement",
                  "src": "1007:220:67"
                }
              ]
            },
            "documentation": null,
            "id": 18529,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "sender_is_from",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 18480,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18479,
                  "name": "_contracts",
                  "nodeType": "VariableDeclaration",
                  "scope": 18529,
                  "src": "905:21:67",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$3_memory_ptr",
                    "typeString": "bytes32[3]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 18476,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "905:7:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 18478,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "33",
                      "id": 18477,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "913:1:67",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "3"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "905:10:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$3_storage_ptr",
                      "typeString": "bytes32[3]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "904:23:67"
            },
            "payable": false,
            "returnParameters": {
              "id": 18483,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18482,
                  "name": "_isFrom",
                  "nodeType": "VariableDeclaration",
                  "scope": 18529,
                  "src": "951:12:67",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18481,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "951:4:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "950:14:67"
            },
            "scope": 18628,
            "src": "881:350:67",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 18539,
              "nodeType": "Block",
              "src": "1332:47:67",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 18535,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 18532,
                            "name": "is_locked",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18610,
                            "src": "1346:9:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$",
                              "typeString": "function () view returns (bool)"
                            }
                          },
                          "id": 18533,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1346:11:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 18534,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1361:5:67",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "src": "1346:20:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 18531,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        26185,
                        26186
                      ],
                      "referencedDeclaration": 26185,
                      "src": "1338:7:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 18536,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1338:29:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18537,
                  "nodeType": "ExpressionStatement",
                  "src": "1338:29:67"
                },
                {
                  "id": 18538,
                  "nodeType": "PlaceholderStatement",
                  "src": "1373:1:67"
                }
              ]
            },
            "documentation": "Function modifier to check resolver's locking status.",
            "id": 18540,
            "name": "unless_resolver_is_locked",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 18530,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1329:2:67"
            },
            "src": "1295:84:67",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 18595,
              "nodeType": "Block",
              "src": "1634:346:67",
              "statements": [
                {
                  "assignments": [
                    18550
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18550,
                      "name": "_is_locked",
                      "nodeType": "VariableDeclaration",
                      "scope": 18596,
                      "src": "1640:15:67",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 18549,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1640:4:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 18556,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 18552,
                            "name": "_resolver",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18544,
                            "src": "1675:9:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 18551,
                          "name": "ContractResolver",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18419,
                          "src": "1658:16:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_ContractResolver_$18419_$",
                            "typeString": "type(contract ContractResolver)"
                          }
                        },
                        "id": 18553,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1658:27:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ContractResolver_$18419",
                          "typeString": "contract ContractResolver"
                        }
                      },
                      "id": 18554,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "locked_forever",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 18284,
                      "src": "1658:42:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_bool_$",
                        "typeString": "function () view external returns (bool)"
                      }
                    },
                    "id": 18555,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1658:44:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1640:62:67"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 18559,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 18557,
                      "name": "_is_locked",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18550,
                      "src": "1712:10:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "66616c7365",
                      "id": 18558,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1726:5:67",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "false"
                    },
                    "src": "1712:19:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 18593,
                    "nodeType": "Block",
                    "src": "1945:31:67",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18591,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 18589,
                            "name": "_success",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18547,
                            "src": "1953:8:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "66616c7365",
                            "id": 18590,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1964:5:67",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          "src": "1953:16:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 18592,
                        "nodeType": "ExpressionStatement",
                        "src": "1953:16:67"
                      }
                    ]
                  },
                  "id": 18594,
                  "nodeType": "IfStatement",
                  "src": "1708:268:67",
                  "trueBody": {
                    "id": 18588,
                    "nodeType": "Block",
                    "src": "1733:205:67",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18564,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 18560,
                            "name": "CONTRACT_ADDRESS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18429,
                            "src": "1741:16:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 18562,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 26217,
                                "src": "1768:4:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ResolverClient_$18628",
                                  "typeString": "contract ResolverClient"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_ResolverClient_$18628",
                                  "typeString": "contract ResolverClient"
                                }
                              ],
                              "id": 18561,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1760:7:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 18563,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1760:13:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1741:32:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 18565,
                        "nodeType": "ExpressionStatement",
                        "src": "1741:32:67"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18568,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 18566,
                            "name": "resolver",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18425,
                            "src": "1781:8:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 18567,
                            "name": "_resolver",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18544,
                            "src": "1792:9:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1781:20:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 18569,
                        "nodeType": "ExpressionStatement",
                        "src": "1781:20:67"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18572,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 18570,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18427,
                            "src": "1809:3:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 18571,
                            "name": "_key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18542,
                            "src": "1815:4:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "1809:10:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 18573,
                        "nodeType": "ExpressionStatement",
                        "src": "1809:10:67"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 18579,
                                  "name": "key",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18427,
                                  "src": "1885:3:67",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 18580,
                                  "name": "CONTRACT_ADDRESS",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18429,
                                  "src": "1890:16:67",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 18576,
                                      "name": "resolver",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18425,
                                      "src": "1852:8:67",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 18575,
                                    "name": "ContractResolver",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18419,
                                    "src": "1835:16:67",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_ContractResolver_$18419_$",
                                      "typeString": "type(contract ContractResolver)"
                                    }
                                  },
                                  "id": 18577,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1835:26:67",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ContractResolver_$18419",
                                    "typeString": "contract ContractResolver"
                                  }
                                },
                                "id": 18578,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "init_register_contract",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 18380,
                                "src": "1835:49:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (bytes32,address) external returns (bool)"
                                }
                              },
                              "id": 18581,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1835:72:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 18574,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              26185,
                              26186
                            ],
                            "referencedDeclaration": 26185,
                            "src": "1827:7:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 18582,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1827:81:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18583,
                        "nodeType": "ExpressionStatement",
                        "src": "1827:81:67"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18586,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 18584,
                            "name": "_success",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18547,
                            "src": "1916:8:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 18585,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1927:4:67",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "1916:15:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 18587,
                        "nodeType": "ExpressionStatement",
                        "src": "1916:15:67"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@dev Initialize new contract\n @param _key the resolver key for this contract\n @return _success if the initialization is successful",
            "id": 18596,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "init",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 18545,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18542,
                  "name": "_key",
                  "nodeType": "VariableDeclaration",
                  "scope": 18596,
                  "src": "1544:12:67",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 18541,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1544:7:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18544,
                  "name": "_resolver",
                  "nodeType": "VariableDeclaration",
                  "scope": 18596,
                  "src": "1558:17:67",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18543,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1558:7:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1543:33:67"
            },
            "payable": false,
            "returnParameters": {
              "id": 18548,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18547,
                  "name": "_success",
                  "nodeType": "VariableDeclaration",
                  "scope": 18596,
                  "src": "1617:13:67",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18546,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1617:4:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1616:15:67"
            },
            "scope": 18628,
            "src": "1530:450:67",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 18609,
              "nodeType": "Block",
              "src": "2173:64:67",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18607,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 18601,
                      "name": "_locked",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18599,
                      "src": "2179:7:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 18603,
                              "name": "resolver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18425,
                              "src": "2206:8:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 18602,
                            "name": "ContractResolver",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18419,
                            "src": "2189:16:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_ContractResolver_$18419_$",
                              "typeString": "type(contract ContractResolver)"
                            }
                          },
                          "id": 18604,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2189:26:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ContractResolver_$18419",
                            "typeString": "contract ContractResolver"
                          }
                        },
                        "id": 18605,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "locked_forever",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 18284,
                        "src": "2189:41:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$__$returns$_t_bool_$",
                          "typeString": "function () view external returns (bool)"
                        }
                      },
                      "id": 18606,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2189:43:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "2179:53:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 18608,
                  "nodeType": "ExpressionStatement",
                  "src": "2179:53:67"
                }
              ]
            },
            "documentation": "@dev Check if resolver is locked\n @return _locked if the resolver is currently locked",
            "id": 18610,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "is_locked",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 18597,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2099:2:67"
            },
            "payable": false,
            "returnParameters": {
              "id": 18600,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18599,
                  "name": "_locked",
                  "nodeType": "VariableDeclaration",
                  "scope": 18610,
                  "src": "2157:12:67",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18598,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2157:4:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2156:14:67"
            },
            "scope": 18628,
            "src": "2081:156:67",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 18626,
              "nodeType": "Block",
              "src": "2491:68:67",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18624,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 18617,
                      "name": "_contract",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18615,
                      "src": "2497:9:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 18622,
                          "name": "_key",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18612,
                          "src": "2549:4:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 18619,
                              "name": "resolver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18425,
                              "src": "2526:8:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 18618,
                            "name": "ContractResolver",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18419,
                            "src": "2509:16:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_ContractResolver_$18419_$",
                              "typeString": "type(contract ContractResolver)"
                            }
                          },
                          "id": 18620,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2509:26:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ContractResolver_$18419",
                            "typeString": "contract ContractResolver"
                          }
                        },
                        "id": 18621,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "get_contract",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 18418,
                        "src": "2509:39:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                          "typeString": "function (bytes32) view external returns (address)"
                        }
                      },
                      "id": 18623,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2509:45:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2497:57:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 18625,
                  "nodeType": "ExpressionStatement",
                  "src": "2497:57:67"
                }
              ]
            },
            "documentation": "@dev Get the address of a contract\n @param _key the resolver key to look up\n @return _contract the address of the contract",
            "id": 18627,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "get_contract",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 18613,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18612,
                  "name": "_key",
                  "nodeType": "VariableDeclaration",
                  "scope": 18627,
                  "src": "2402:12:67",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 18611,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2402:7:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2401:14:67"
            },
            "payable": false,
            "returnParameters": {
              "id": 18616,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18615,
                  "name": "_contract",
                  "nodeType": "VariableDeclaration",
                  "scope": 18627,
                  "src": "2470:17:67",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18614,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2470:7:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2469:19:67"
            },
            "scope": 18628,
            "src": "2380:179:67",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 18629,
        "src": "148:2413:67"
      }
    ],
    "src": "0:2562:67"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.25+commit.59dbf8f1.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "2.0.2",
  "updatedAt": "2020-03-13T02:38:46.126Z"
}