UNPKG

@gooddollar/goodcontracts

Version:
1,274 lines (1,273 loc) 110 kB
{ "contractName": "Ownable", "abi": [ { "inputs": [], "payable": false, "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "previousOwner", "type": "address" }, { "indexed": true, "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "constant": true, "inputs": [], "name": "owner", "outputs": [ { "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "isOwner", "outputs": [ { "name": "", "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [], "name": "renounceOwnership", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" } ], "metadata": "", "bytecode": "0x", "deployedBytecode": "0x", "sourceMap": "", "deployedSourceMap": "", "source": "pragma solidity ^0.5.0;\n\n/**\n * @title Ownable\n * @dev The Ownable contract has an owner address, and provides basic authorization control\n * functions, this simplifies the implementation of \"user permissions\".\n */\ncontract Ownable {\n address private _owner;\n\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n /**\n * @dev The Ownable constructor sets the original `owner` of the contract to the sender\n * account.\n */\n constructor () internal {\n _owner = msg.sender;\n emit OwnershipTransferred(address(0), _owner);\n }\n\n /**\n * @return the address of the owner.\n */\n function owner() public view returns (address) {\n return _owner;\n }\n\n /**\n * @dev Throws if called by any account other than the owner.\n */\n modifier onlyOwner() {\n require(isOwner());\n _;\n }\n\n /**\n * @return true if `msg.sender` is the owner of the contract.\n */\n function isOwner() public view returns (bool) {\n return msg.sender == _owner;\n }\n\n /**\n * @dev Allows the current owner to relinquish control of the contract.\n * @notice Renouncing to ownership will leave the contract without an owner.\n * It will not be possible to call the functions with the `onlyOwner`\n * modifier anymore.\n */\n function renounceOwnership() public onlyOwner {\n emit OwnershipTransferred(_owner, address(0));\n _owner = address(0);\n }\n\n /**\n * @dev Allows the current owner to transfer control of the contract to a newOwner.\n * @param newOwner The address to transfer ownership to.\n */\n function transferOwnership(address newOwner) public onlyOwner {\n _transferOwnership(newOwner);\n }\n\n /**\n * @dev Transfers control of the contract to a newOwner.\n * @param newOwner The address to transfer ownership to.\n */\n function _transferOwnership(address newOwner) internal {\n require(newOwner != address(0));\n emit OwnershipTransferred(_owner, newOwner);\n _owner = newOwner;\n }\n}\n", "sourcePath": "openzeppelin-solidity/contracts/ownership/Ownable.sol", "ast": { "absolutePath": "openzeppelin-solidity/contracts/ownership/Ownable.sol", "exportedSymbols": { "Ownable": [ 16028 ] }, "id": 16029, "nodeType": "SourceUnit", "nodes": [ { "id": 15921, "literals": [ "solidity", "^", "0.5", ".0" ], "nodeType": "PragmaDirective", "src": "0:23:68" }, { "baseContracts": [], "contractDependencies": [], "contractKind": "contract", "documentation": "@title Ownable\n@dev The Ownable contract has an owner address, and provides basic authorization control\nfunctions, this simplifies the implementation of \"user permissions\".", "fullyImplemented": true, "id": 16028, "linearizedBaseContracts": [ 16028 ], "name": "Ownable", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, "id": 15923, "name": "_owner", "nodeType": "VariableDeclaration", "scope": 16028, "src": "238:22:68", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 15922, "name": "address", "nodeType": "ElementaryTypeName", "src": "238:7:68", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "private" }, { "anonymous": false, "documentation": null, "id": 15929, "name": "OwnershipTransferred", "nodeType": "EventDefinition", "parameters": { "id": 15928, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 15925, "indexed": true, "name": "previousOwner", "nodeType": "VariableDeclaration", "scope": 15929, "src": "294:29:68", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 15924, "name": "address", "nodeType": "ElementaryTypeName", "src": "294:7:68", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 15927, "indexed": true, "name": "newOwner", "nodeType": "VariableDeclaration", "scope": 15929, "src": "325:24:68", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 15926, "name": "address", "nodeType": "ElementaryTypeName", "src": "325:7:68", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "293:57:68" }, "src": "267:84:68" }, { "body": { "id": 15944, "nodeType": "Block", "src": "505:91:68", "statements": [ { "expression": { "argumentTypes": null, "id": 15935, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 15932, "name": "_owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 15923, "src": "515:6:68", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 15933, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 16782, "src": "524:3:68", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 15934, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "524:10:68", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "515:19:68", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 15936, "nodeType": "ExpressionStatement", "src": "515:19:68" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 15939, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "578:1:68", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 15938, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "570:7:68", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 15940, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "570:10:68", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 15941, "name": "_owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 15923, "src": "582:6:68", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 15937, "name": "OwnershipTransferred", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 15929, "src": "549:20:68", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", "typeString": "function (address,address)" } }, "id": 15942, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "549:40:68", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 15943, "nodeType": "EmitStatement", "src": "544:45:68" } ] }, "documentation": "@dev The Ownable constructor sets the original `owner` of the contract to the sender\naccount.", "id": 15945, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "parameters": { "id": 15930, "nodeType": "ParameterList", "parameters": [], "src": "493:2:68" }, "returnParameters": { "id": 15931, "nodeType": "ParameterList", "parameters": [], "src": "505:0:68" }, "scope": 16028, "src": "481:115:68", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { "id": 15952, "nodeType": "Block", "src": "706:30:68", "statements": [ { "expression": { "argumentTypes": null, "id": 15950, "name": "_owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 15923, "src": "723:6:68", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "functionReturnParameters": 15949, "id": 15951, "nodeType": "Return", "src": "716:13:68" } ] }, "documentation": "@return the address of the owner.", "id": 15953, "implemented": true, "kind": "function", "modifiers": [], "name": "owner", "nodeType": "FunctionDefinition", "parameters": { "id": 15946, "nodeType": "ParameterList", "parameters": [], "src": "673:2:68" }, "returnParameters": { "id": 15949, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 15948, "name": "", "nodeType": "VariableDeclaration", "scope": 15953, "src": "697:7:68", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 15947, "name": "address", "nodeType": "ElementaryTypeName", "src": "697:7:68", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "696:9:68" }, "scope": 16028, "src": "659:77:68", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { "id": 15961, "nodeType": "Block", "src": "845:46:68", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "id": 15956, "name": "isOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 15973, "src": "863:7:68", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", "typeString": "function () view returns (bool)" } }, "id": 15957, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "863:9:68", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 15955, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 16785, 16786 ], "referencedDeclaration": 16785, "src": "855:7:68", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 15958, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "855:18:68", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 15959, "nodeType": "ExpressionStatement", "src": "855:18:68" }, { "id": 15960, "nodeType": "PlaceholderStatement", "src": "883:1:68" } ] }, "documentation": "@dev Throws if called by any account other than the owner.", "id": 15962, "name": "onlyOwner", "nodeType": "ModifierDefinition", "parameters": { "id": 15954, "nodeType": "ParameterList", "parameters": [], "src": "842:2:68" }, "src": "824:67:68", "visibility": "internal" }, { "body": { "id": 15972, "nodeType": "Block", "src": "1025:44:68", "statements": [ { "expression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 15970, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 15967, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 16782, "src": "1042:3:68", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 15968, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1042:10:68", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 15969, "name": "_owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 15923, "src": "1056:6:68", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "1042:20:68", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "functionReturnParameters": 15966, "id": 15971, "nodeType": "Return", "src": "1035:27:68" } ] }, "documentation": "@return true if `msg.sender` is the owner of the contract.", "id": 15973, "implemented": true, "kind": "function", "modifiers": [], "name": "isOwner", "nodeType": "FunctionDefinition", "parameters": { "id": 15963, "nodeType": "ParameterList", "parameters": [], "src": "995:2:68" }, "returnParameters": { "id": 15966, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 15965, "name": "", "nodeType": "VariableDeclaration", "scope": 15973, "src": "1019:4:68", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 15964, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1019:4:68", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "1018:6:68" }, "scope": 16028, "src": "979:90:68", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { "id": 15991, "nodeType": "Block", "src": "1393:91:68", "statements": [ { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 15979, "name": "_owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 15923, "src": "1429:6:68", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 15981, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1445:1:68", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 15980, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1437:7:68", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 15982, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1437:10:68", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "id": 15978, "name": "OwnershipTransferred", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 15929, "src": "1408:20:68", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", "typeString": "function (address,address)" } }, "id": 15983, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1408:40:68", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 15984, "nodeType": "EmitStatement", "src": "1403:45:68" }, { "expression": { "argumentTypes": null, "id": 15989, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 15985, "name": "_owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 15923, "src": "1458:6:68", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 15987, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1475:1:68", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 15986, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1467:7:68", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 15988, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1467:10:68", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "1458:19:68", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 15990, "nodeType": "ExpressionStatement", "src": "1458:19:68" } ] }, "documentation": "@dev Allows the current owner to relinquish control of the contract.\n@notice Renouncing to ownership will leave the contract without an owner.\nIt will not be possible to call the functions with the `onlyOwner`\nmodifier anymore.", "id": 15992, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 15976, "modifierName": { "argumentTypes": null, "id": 15975, "name": "onlyOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 15962, "src": "1383:9:68", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "1383:9:68" } ], "name": "renounceOwnership", "nodeType": "FunctionDefinition", "parameters": { "id": 15974, "nodeType": "ParameterList", "parameters": [], "src": "1373:2:68" }, "returnParameters": { "id": 15977, "nodeType": "ParameterList", "parameters": [], "src": "1393:0:68" }, "scope": 16028, "src": "1347:137:68", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { "id": 16003, "nodeType": "Block", "src": "1717:45:68", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 16000, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 15994, "src": "1746:8:68", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 15999, "name": "_transferOwnership", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 16027, "src": "1727:18:68", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, "id": 16001, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1727:28:68", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 16002, "nodeType": "ExpressionStatement", "src": "1727:28:68" } ] }, "documentation": "@dev Allows the current owner to transfer control of the contract to a newOwner.\n@param newOwner The address to transfer ownership to.", "id": 16004, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 15997, "modifierName": { "argumentTypes": null, "id": 15996, "name": "onlyOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 15962, "src": "1707:9:68", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "1707:9:68" } ], "name": "transferOwnership", "nodeType": "FunctionDefinition", "parameters": { "id": 15995, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 15994, "name": "newOwner", "nodeType": "VariableDeclaration", "scope": 16004, "src": "1682:16:68", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 15993, "name": "address", "nodeType": "ElementaryTypeName", "src": "1682:7:68", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "1681:18:68" }, "returnParameters": { "id": 15998, "nodeType": "ParameterList", "parameters": [], "src": "1717:0:68" }, "scope": 16028, "src": "1655:107:68", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { "id": 16026, "nodeType": "Block", "src": "1961:128:68", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 16014, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 16010, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 16006, "src": "1979:8:68", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 16012, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1999:1:68", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 16011, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1991:7:68", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 16013, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1991:10:68", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "1979:22:68", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 16009, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 16785, 16786 ], "referencedDeclaration": 16785, "src": "1971:7:68", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 16015, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1971:31:68", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 16016, "nodeType": "ExpressionStatement", "src": "1971:31:68" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 16018, "name": "_owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 15923,