aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWei-Ning Huang <w@byzantine-lab.io>2019-09-29 11:15:38 +0800
committerWei-Ning Huang <w@byzantine-lab.io>2019-09-29 11:15:47 +0800
commit67add53d950448534a42942c6da7e39e3ddc3b83 (patch)
tree771dea0000e83b36a798d97be403074b064f3fe7
parentab7fe370f86812530c0e4bc55f936295250831a9 (diff)
downloadtangerine-node-staker-67add53d950448534a42942c6da7e39e3ddc3b83.tar
tangerine-node-staker-67add53d950448534a42942c6da7e39e3ddc3b83.tar.gz
tangerine-node-staker-67add53d950448534a42942c6da7e39e3ddc3b83.tar.bz2
tangerine-node-staker-67add53d950448534a42942c6da7e39e3ddc3b83.tar.lz
tangerine-node-staker-67add53d950448534a42942c6da7e39e3ddc3b83.tar.xz
tangerine-node-staker-67add53d950448534a42942c6da7e39e3ddc3b83.tar.zst
tangerine-node-staker-67add53d950448534a42942c6da7e39e3ddc3b83.zip
Add build directory
-rw-r--r--.gitignore1
-rw-r--r--build/contracts/FoundationOwnable.json1139
-rw-r--r--build/contracts/Governance.json10060
-rw-r--r--build/contracts/GovernanceMock.json10900
-rw-r--r--build/contracts/Migrations.json1396
-rw-r--r--build/contracts/NodeStaker.json10076
-rw-r--r--build/contracts/NodeStakerMock.json1001
-rw-r--r--build/contracts/Ownable.json2841
-rw-r--r--build/contracts/SafeMath.json3288
9 files changed, 40701 insertions, 1 deletions
diff --git a/.gitignore b/.gitignore
index df6fc1e..4cf3845 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,7 +3,6 @@
node_modules
.*.swp
-build
.vscode
.env
diff --git a/build/contracts/FoundationOwnable.json b/build/contracts/FoundationOwnable.json
new file mode 100644
index 0000000..7b92e77
--- /dev/null
+++ b/build/contracts/FoundationOwnable.json
@@ -0,0 +1,1139 @@
+{
+ "contractName": "FoundationOwnable",
+ "abi": [
+ {
+ "inputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "constructor"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "isFoundation",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "_address",
+ "type": "address"
+ }
+ ],
+ "name": "setFoundationAddress",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ }
+ ],
+ "metadata": "{\"compiler\":{\"version\":\"0.5.11+commit.c082d0b4\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"isFoundation\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"setFoundationAddress\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/Users/aitjcize/Work/tangerine-network/node-staker/contracts/FoundationOwnable.sol\":\"FoundationOwnable\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/aitjcize/Work/tangerine-network/node-staker/contracts/FoundationOwnable.sol\":{\"keccak256\":\"0xf7a0313191c80af18efbb2c914fa12bf5a96fb5a43c20c21371f67bcaf449bcf\",\"urls\":[\"bzz-raw://6bc9950f402bb1654e0ab1b1357fa857f6bd6e8a5863b9ca7e59d97b51ebd1ab\",\"dweb:/ipfs/QmeWak99q7rfSZzV79n5GhFQZTeZHhkoV4Loxw6sFmiQC4\"]}},\"version\":1}",
+ "bytecode": "0x608060405234801561001057600080fd5b50600080546001600160a01b03191633179055610126806100326000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c8063d392a7d5146037578063f41377ca146051575b600080fd5b603d6076565b604080519115158252519081900360200190f35b607460048036036020811015606557600080fd5b50356001600160a01b03166087565b005b6000546001600160a01b0316331490565b608d6076565b60cf576040805162461bcd60e51b815260206004820152600f60248201526e37b7363c903337bab73230ba34b7b760891b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b039290921691909117905556fea265627a7a723158208134ae20283d936eeebbbd7921a8dbe393a5bcf468c6c1a66647f9bf9e9953b264736f6c634300050b0032",
+ "deployedBytecode": "0x6080604052348015600f57600080fd5b506004361060325760003560e01c8063d392a7d5146037578063f41377ca146051575b600080fd5b603d6076565b604080519115158252519081900360200190f35b607460048036036020811015606557600080fd5b50356001600160a01b03166087565b005b6000546001600160a01b0316331490565b608d6076565b60cf576040805162461bcd60e51b815260206004820152600f60248201526e37b7363c903337bab73230ba34b7b760891b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b039290921691909117905556fea265627a7a723158208134ae20283d936eeebbbd7921a8dbe393a5bcf468c6c1a66647f9bf9e9953b264736f6c634300050b0032",
+ "sourceMap": "26:525:0:-;;;87:62;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;114:17:0;:30;;-1:-1:-1;;;;;;114:30:0;134:10;114:30;;;26:525;;;;;;",
+ "deployedSourceMap": "26:525:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26:525:0;;;;;;;;;;;;;;;;;;;;;;;;335:100;;;:::i;:::-;;;;;;;;;;;;;;;;;;439:109;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;439:109:0;-1:-1:-1;;;;;439:109:0;;:::i;:::-;;335:100;380:4;413:17;-1:-1:-1;;;;;413:17:0;399:10;:31;;335:100::o;439:109::-;239:14;:12;:14::i;:::-;231:42;;;;;-1:-1:-1;;;231:42:0;;;;;;;;;;;;-1:-1:-1;;;231:42:0;;;;;;;;;;;;;;;515:17;:28;;-1:-1:-1;;;;;;515:28:0;-1:-1:-1;;;;;515:28:0;;;;;;;;;;439:109::o",
+ "source": "pragma solidity ^0.5.11;\n\ncontract FoundationOwnable {\n address foundationAddress;\n\n constructor() public {\n foundationAddress = msg.sender;\n }\n\n // ---------\n // Modifiers\n // ---------\n\n modifier onlyFoundation() {\n require(isFoundation(), \"only foundation\");\n _;\n }\n\n // ---------\n // Functions\n // ---------\n\n function isFoundation() public view returns (bool) {\n return msg.sender == foundationAddress;\n }\n\n function setFoundationAddress(address _address) public onlyFoundation {\n foundationAddress = _address;\n }\n\n}\n",
+ "sourcePath": "/Users/aitjcize/Work/tangerine-network/node-staker/contracts/FoundationOwnable.sol",
+ "ast": {
+ "absolutePath": "/Users/aitjcize/Work/tangerine-network/node-staker/contracts/FoundationOwnable.sol",
+ "exportedSymbols": {
+ "FoundationOwnable": [
+ 46
+ ]
+ },
+ "id": 47,
+ "nodeType": "SourceUnit",
+ "nodes": [
+ {
+ "id": 1,
+ "literals": [
+ "solidity",
+ "^",
+ "0.5",
+ ".11"
+ ],
+ "nodeType": "PragmaDirective",
+ "src": "0:24:0"
+ },
+ {
+ "baseContracts": [],
+ "contractDependencies": [],
+ "contractKind": "contract",
+ "documentation": null,
+ "fullyImplemented": true,
+ "id": 46,
+ "linearizedBaseContracts": [
+ 46
+ ],
+ "name": "FoundationOwnable",
+ "nodeType": "ContractDefinition",
+ "nodes": [
+ {
+ "constant": false,
+ "id": 3,
+ "name": "foundationAddress",
+ "nodeType": "VariableDeclaration",
+ "scope": 46,
+ "src": "57:25:0",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "57:7:0",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "body": {
+ "id": 11,
+ "nodeType": "Block",
+ "src": "108:41:0",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 9,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 6,
+ "name": "foundationAddress",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 3,
+ "src": "114:17:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 7,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "134:3:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 8,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "134:10:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "src": "114:30:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 10,
+ "nodeType": "ExpressionStatement",
+ "src": "114:30:0"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 12,
+ "implemented": true,
+ "kind": "constructor",
+ "modifiers": [],
+ "name": "",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 4,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "98:2:0"
+ },
+ "returnParameters": {
+ "id": 5,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "108:0:0"
+ },
+ "scope": 46,
+ "src": "87:62:0",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 21,
+ "nodeType": "Block",
+ "src": "225:60:0",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 15,
+ "name": "isFoundation",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33,
+ "src": "239:12:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$",
+ "typeString": "function () view returns (bool)"
+ }
+ },
+ "id": 16,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "239:14:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "6f6e6c7920666f756e646174696f6e",
+ "id": 17,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "255:17:0",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_3cb40e8cabfc5c18b27bcad1db74480fdb43af2904de796b9dfce2eac29c0daa",
+ "typeString": "literal_string \"only foundation\""
+ },
+ "value": "only foundation"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_3cb40e8cabfc5c18b27bcad1db74480fdb43af2904de796b9dfce2eac29c0daa",
+ "typeString": "literal_string \"only foundation\""
+ }
+ ],
+ "id": 14,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 1534,
+ 1535
+ ],
+ "referencedDeclaration": 1535,
+ "src": "231:7:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 18,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "231:42:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 19,
+ "nodeType": "ExpressionStatement",
+ "src": "231:42:0"
+ },
+ {
+ "id": 20,
+ "nodeType": "PlaceholderStatement",
+ "src": "279:1:0"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 22,
+ "name": "onlyFoundation",
+ "nodeType": "ModifierDefinition",
+ "parameters": {
+ "id": 13,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "222:2:0"
+ },
+ "src": "199:86:0",
+ "visibility": "internal"
+ },
+ {
+ "body": {
+ "id": 32,
+ "nodeType": "Block",
+ "src": "386:49:0",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 30,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 27,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "399:3:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 28,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "399:10:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 29,
+ "name": "foundationAddress",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 3,
+ "src": "413:17:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "399:31:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "functionReturnParameters": 26,
+ "id": 31,
+ "nodeType": "Return",
+ "src": "392:38:0"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 33,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "isFoundation",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 23,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "356:2:0"
+ },
+ "returnParameters": {
+ "id": 26,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 25,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 33,
+ "src": "380:4:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 24,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "380:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "379:6:0"
+ },
+ "scope": 46,
+ "src": "335:100:0",
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 44,
+ "nodeType": "Block",
+ "src": "509:39:0",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 42,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 40,
+ "name": "foundationAddress",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 3,
+ "src": "515:17:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 41,
+ "name": "_address",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 35,
+ "src": "535:8:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "515:28:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 43,
+ "nodeType": "ExpressionStatement",
+ "src": "515:28:0"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 45,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 38,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 37,
+ "name": "onlyFoundation",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 22,
+ "src": "494:14:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "494:14:0"
+ }
+ ],
+ "name": "setFoundationAddress",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 36,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 35,
+ "name": "_address",
+ "nodeType": "VariableDeclaration",
+ "scope": 45,
+ "src": "469:16:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 34,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "469:7:0",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "468:18:0"
+ },
+ "returnParameters": {
+ "id": 39,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "509:0:0"
+ },
+ "scope": 46,
+ "src": "439:109:0",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ }
+ ],
+ "scope": 47,
+ "src": "26:525:0"
+ }
+ ],
+ "src": "0:552:0"
+ },
+ "legacyAST": {
+ "absolutePath": "/Users/aitjcize/Work/tangerine-network/node-staker/contracts/FoundationOwnable.sol",
+ "exportedSymbols": {
+ "FoundationOwnable": [
+ 46
+ ]
+ },
+ "id": 47,
+ "nodeType": "SourceUnit",
+ "nodes": [
+ {
+ "id": 1,
+ "literals": [
+ "solidity",
+ "^",
+ "0.5",
+ ".11"
+ ],
+ "nodeType": "PragmaDirective",
+ "src": "0:24:0"
+ },
+ {
+ "baseContracts": [],
+ "contractDependencies": [],
+ "contractKind": "contract",
+ "documentation": null,
+ "fullyImplemented": true,
+ "id": 46,
+ "linearizedBaseContracts": [
+ 46
+ ],
+ "name": "FoundationOwnable",
+ "nodeType": "ContractDefinition",
+ "nodes": [
+ {
+ "constant": false,
+ "id": 3,
+ "name": "foundationAddress",
+ "nodeType": "VariableDeclaration",
+ "scope": 46,
+ "src": "57:25:0",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "57:7:0",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "body": {
+ "id": 11,
+ "nodeType": "Block",
+ "src": "108:41:0",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 9,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 6,
+ "name": "foundationAddress",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 3,
+ "src": "114:17:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 7,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "134:3:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 8,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "134:10:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "src": "114:30:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 10,
+ "nodeType": "ExpressionStatement",
+ "src": "114:30:0"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 12,
+ "implemented": true,
+ "kind": "constructor",
+ "modifiers": [],
+ "name": "",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 4,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "98:2:0"
+ },
+ "returnParameters": {
+ "id": 5,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "108:0:0"
+ },
+ "scope": 46,
+ "src": "87:62:0",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 21,
+ "nodeType": "Block",
+ "src": "225:60:0",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 15,
+ "name": "isFoundation",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33,
+ "src": "239:12:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$",
+ "typeString": "function () view returns (bool)"
+ }
+ },
+ "id": 16,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "239:14:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "6f6e6c7920666f756e646174696f6e",
+ "id": 17,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "255:17:0",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_3cb40e8cabfc5c18b27bcad1db74480fdb43af2904de796b9dfce2eac29c0daa",
+ "typeString": "literal_string \"only foundation\""
+ },
+ "value": "only foundation"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_3cb40e8cabfc5c18b27bcad1db74480fdb43af2904de796b9dfce2eac29c0daa",
+ "typeString": "literal_string \"only foundation\""
+ }
+ ],
+ "id": 14,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 1534,
+ 1535
+ ],
+ "referencedDeclaration": 1535,
+ "src": "231:7:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 18,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "231:42:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 19,
+ "nodeType": "ExpressionStatement",
+ "src": "231:42:0"
+ },
+ {
+ "id": 20,
+ "nodeType": "PlaceholderStatement",
+ "src": "279:1:0"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 22,
+ "name": "onlyFoundation",
+ "nodeType": "ModifierDefinition",
+ "parameters": {
+ "id": 13,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "222:2:0"
+ },
+ "src": "199:86:0",
+ "visibility": "internal"
+ },
+ {
+ "body": {
+ "id": 32,
+ "nodeType": "Block",
+ "src": "386:49:0",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 30,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 27,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "399:3:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 28,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "399:10:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 29,
+ "name": "foundationAddress",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 3,
+ "src": "413:17:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "399:31:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "functionReturnParameters": 26,
+ "id": 31,
+ "nodeType": "Return",
+ "src": "392:38:0"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 33,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "isFoundation",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 23,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "356:2:0"
+ },
+ "returnParameters": {
+ "id": 26,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 25,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 33,
+ "src": "380:4:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 24,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "380:4:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "379:6:0"
+ },
+ "scope": 46,
+ "src": "335:100:0",
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 44,
+ "nodeType": "Block",
+ "src": "509:39:0",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 42,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 40,
+ "name": "foundationAddress",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 3,
+ "src": "515:17:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 41,
+ "name": "_address",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 35,
+ "src": "535:8:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "515:28:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 43,
+ "nodeType": "ExpressionStatement",
+ "src": "515:28:0"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 45,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 38,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 37,
+ "name": "onlyFoundation",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 22,
+ "src": "494:14:0",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "494:14:0"
+ }
+ ],
+ "name": "setFoundationAddress",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 36,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 35,
+ "name": "_address",
+ "nodeType": "VariableDeclaration",
+ "scope": 45,
+ "src": "469:16:0",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 34,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "469:7:0",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "468:18:0"
+ },
+ "returnParameters": {
+ "id": 39,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "509:0:0"
+ },
+ "scope": 46,
+ "src": "439:109:0",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ }
+ ],
+ "scope": 47,
+ "src": "26:525:0"
+ }
+ ],
+ "src": "0:552:0"
+ },
+ "compiler": {
+ "name": "solc",
+ "version": "0.5.11+commit.c082d0b4.Emscripten.clang"
+ },
+ "networks": {},
+ "schemaVersion": "3.0.11",
+ "updatedAt": "2019-09-29T03:09:06.435Z",
+ "devdoc": {
+ "methods": {}
+ },
+ "userdoc": {
+ "methods": {}
+ }
+} \ No newline at end of file
diff --git a/build/contracts/Governance.json b/build/contracts/Governance.json
new file mode 100644
index 0000000..d41c449
--- /dev/null
+++ b/build/contracts/Governance.json
@@ -0,0 +1,10060 @@
+{
+ "contractName": "Governance",
+ "abi": [
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "name": "dkgSuccesses",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "notarySetSize",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "totalSupply",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "name": "nodes",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "owner",
+ "type": "address"
+ },
+ {
+ "internalType": "bytes",
+ "name": "publicKey",
+ "type": "bytes"
+ },
+ {
+ "internalType": "uint256",
+ "name": "staked",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "fined",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "name",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "email",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "location",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "url",
+ "type": "string"
+ },
+ {
+ "internalType": "uint256",
+ "name": "unstaked",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "unstakedAt",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "notaryParamBeta",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "miningVelocity",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "lambdaBA",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "minStake",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "crsRound",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "notaryParamAlpha",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "dkgSuccessesCount",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "name": "dkgFinalizeds",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "blockGasLimit",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "dkgRound",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "totalStaked",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "name": "nodesOffsetByAddress",
+ "outputs": [
+ {
+ "internalType": "int256",
+ "name": "",
+ "type": "int256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "crs",
+ "outputs": [
+ {
+ "internalType": "bytes32",
+ "name": "",
+ "type": "bytes32"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "roundLength",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "nextHalvingSupply",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "name": "dkgComplaints",
+ "outputs": [
+ {
+ "internalType": "bytes",
+ "name": "",
+ "type": "bytes"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "owner",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "bytes32",
+ "name": "",
+ "type": "bytes32"
+ }
+ ],
+ "name": "dkgMasterPublicKeyOffset",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "name": "dkgMPKReadys",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "lastHalvedAmount",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "bytes32",
+ "name": "",
+ "type": "bytes32"
+ }
+ ],
+ "name": "finedRecords",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "lambdaDKG",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "name": "fineValues",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "name": "roundHeight",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "dkgMPKReadysCount",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "minBlockInterval",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "name": "dkgMasterPublicKeys",
+ "outputs": [
+ {
+ "internalType": "bytes",
+ "name": "",
+ "type": "bytes"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "name": "lastProposedHeight",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "minGasPrice",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "dkgFinalizedsCount",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "bytes32",
+ "name": "",
+ "type": "bytes32"
+ }
+ ],
+ "name": "dkgComplaintsProposed",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "name": "nodesOffsetByNodeKeyAddress",
+ "outputs": [
+ {
+ "internalType": "int256",
+ "name": "",
+ "type": "int256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "lockupPeriod",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "name": "dkgResetCount",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "anonymous": false,
+ "inputs": [],
+ "name": "ConfigurationChanged",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "uint256",
+ "name": "Round",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "bytes32",
+ "name": "CRS",
+ "type": "bytes32"
+ }
+ ],
+ "name": "CRSProposed",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "NodeAddress",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "NewOwnerAddress",
+ "type": "address"
+ }
+ ],
+ "name": "NodeOwnershipTransfered",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "NodeAddress",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "bytes",
+ "name": "PublicKey",
+ "type": "bytes"
+ }
+ ],
+ "name": "NodePublicKeyReplaced",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "NodeAddress",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "Amount",
+ "type": "uint256"
+ }
+ ],
+ "name": "Staked",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "NodeAddress",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "Amount",
+ "type": "uint256"
+ }
+ ],
+ "name": "Unstaked",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "NodeAddress",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "Amount",
+ "type": "uint256"
+ }
+ ],
+ "name": "Withdrawn",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "NodeAddress",
+ "type": "address"
+ }
+ ],
+ "name": "NodeAdded",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "NodeAddress",
+ "type": "address"
+ }
+ ],
+ "name": "NodeRemoved",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "NodeAddress",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "Type",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "bytes",
+ "name": "Arg1",
+ "type": "bytes"
+ },
+ {
+ "indexed": false,
+ "internalType": "bytes",
+ "name": "Arg2",
+ "type": "bytes"
+ }
+ ],
+ "name": "Reported",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "NodeAddress",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "Amount",
+ "type": "uint256"
+ }
+ ],
+ "name": "Fined",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "NodeAddress",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "Amount",
+ "type": "uint256"
+ }
+ ],
+ "name": "FinePaid",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "uint256",
+ "name": "Round",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "BlockHeight",
+ "type": "uint256"
+ }
+ ],
+ "name": "DKGReset",
+ "type": "event"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "NewOwner",
+ "type": "address"
+ }
+ ],
+ "name": "transferOwnership",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "MinStake",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "LockupPeriod",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "MinGasPrice",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "BlockGasLimit",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "LambdaBA",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "LambdaDKG",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "NotaryParamAlpha",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "NotaryParamBeta",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "RoundLength",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "MinBlockInterval",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256[]",
+ "name": "FineValues",
+ "type": "uint256[]"
+ }
+ ],
+ "name": "updateConfiguration",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "bytes",
+ "name": "Complaint",
+ "type": "bytes"
+ }
+ ],
+ "name": "addDKGComplaint",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "bytes",
+ "name": "PublicKey",
+ "type": "bytes"
+ }
+ ],
+ "name": "addDKGMasterPublicKey",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "bytes",
+ "name": "MPKReady",
+ "type": "bytes"
+ }
+ ],
+ "name": "addDKGMPKReady",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "bytes",
+ "name": "Finalize",
+ "type": "bytes"
+ }
+ ],
+ "name": "addDKGFinalize",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "bytes",
+ "name": "Success",
+ "type": "bytes"
+ }
+ ],
+ "name": "addDKGSuccess",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "NodeAddress",
+ "type": "address"
+ }
+ ],
+ "name": "payFine",
+ "outputs": [],
+ "payable": true,
+ "stateMutability": "payable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "nodesLength",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "Round",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bytes",
+ "name": "SignedCRS",
+ "type": "bytes"
+ }
+ ],
+ "name": "proposeCRS",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "Type",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bytes",
+ "name": "Arg1",
+ "type": "bytes"
+ },
+ {
+ "internalType": "bytes",
+ "name": "Arg2",
+ "type": "bytes"
+ }
+ ],
+ "name": "report",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "bytes",
+ "name": "NewSignedCRS",
+ "type": "bytes"
+ }
+ ],
+ "name": "resetDKG",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "bytes",
+ "name": "PublicKey",
+ "type": "bytes"
+ },
+ {
+ "internalType": "string",
+ "name": "Name",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "Email",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "Location",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "Url",
+ "type": "string"
+ }
+ ],
+ "name": "register",
+ "outputs": [],
+ "payable": true,
+ "stateMutability": "payable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "bytes",
+ "name": "NewPublicKey",
+ "type": "bytes"
+ }
+ ],
+ "name": "replaceNodePublicKey",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [],
+ "name": "stake",
+ "outputs": [],
+ "payable": true,
+ "stateMutability": "payable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "NewOwner",
+ "type": "address"
+ }
+ ],
+ "name": "transferNodeOwnership",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "OldOwner",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "NewOwner",
+ "type": "address"
+ }
+ ],
+ "name": "transferNodeOwnershipByFoundation",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "Amount",
+ "type": "uint256"
+ }
+ ],
+ "name": "unstake",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "Name",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "Email",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "Location",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "Url",
+ "type": "string"
+ }
+ ],
+ "name": "updateNodeInfo",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [],
+ "name": "withdraw",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "withdrawable",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ }
+ ],
+ "metadata": "{\"compiler\":{\"version\":\"0.5.11+commit.c082d0b4\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"dkgSuccesses\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"notarySetSize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"MinStake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"LockupPeriod\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"MinGasPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"BlockGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"LambdaBA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"LambdaDKG\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"NotaryParamAlpha\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"NotaryParamBeta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"RoundLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"MinBlockInterval\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"FineValues\",\"type\":\"uint256[]\"}],\"name\":\"updateConfiguration\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"PublicKey\",\"type\":\"bytes\"}],\"name\":\"addDKGMasterPublicKey\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"nodes\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"staked\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fined\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"email\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"location\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"url\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"unstaked\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unstakedAt\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"notaryParamBeta\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"MPKReady\",\"type\":\"bytes\"}],\"name\":\"addDKGMPKReady\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"miningVelocity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"Finalize\",\"type\":\"bytes\"}],\"name\":\"addDKGFinalize\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"lambdaBA\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"Amount\",\"type\":\"uint256\"}],\"name\":\"unstake\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"Type\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"Arg1\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"Arg2\",\"type\":\"bytes\"}],\"name\":\"report\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"minStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"stake\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"withdraw\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"NodeAddress\",\"type\":\"address\"}],\"name\":\"payFine\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"NewPublicKey\",\"type\":\"bytes\"}],\"name\":\"replaceNodePublicKey\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"NewOwner\",\"type\":\"address\"}],\"name\":\"transferNodeOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"crsRound\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"notaryParamAlpha\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"dkgSuccessesCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"Success\",\"type\":\"bytes\"}],\"name\":\"addDKGSuccess\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"withdrawable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"NewSignedCRS\",\"type\":\"bytes\"}],\"name\":\"resetDKG\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"dkgFinalizeds\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"blockGasLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"dkgRound\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"OldOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"NewOwner\",\"type\":\"address\"}],\"name\":\"transferNodeOwnershipByFoundation\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalStaked\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nodesOffsetByAddress\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"crs\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"roundLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"nextHalvingSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"dkgComplaints\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"dkgMasterPublicKeyOffset\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"dkgMPKReadys\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"lastHalvedAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"finedRecords\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"lambdaDKG\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"Complaint\",\"type\":\"bytes\"}],\"name\":\"addDKGComplaint\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"fineValues\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"roundHeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"dkgMPKReadysCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"minBlockInterval\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"Round\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"SignedCRS\",\"type\":\"bytes\"}],\"name\":\"proposeCRS\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"string\",\"name\":\"Name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"Email\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"Location\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"Url\",\"type\":\"string\"}],\"name\":\"updateNodeInfo\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"dkgMasterPublicKeys\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"PublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"Name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"Email\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"Location\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"Url\",\"type\":\"string\"}],\"name\":\"register\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"lastProposedHeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"minGasPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"dkgFinalizedsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"dkgComplaintsProposed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nodesOffsetByNodeKeyAddress\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"lockupPeriod\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"dkgResetCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"NewOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"nodesLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"ConfigurationChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"Round\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"CRS\",\"type\":\"bytes32\"}],\"name\":\"CRSProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"NodeAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"NewOwnerAddress\",\"type\":\"address\"}],\"name\":\"NodeOwnershipTransfered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"NodeAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"PublicKey\",\"type\":\"bytes\"}],\"name\":\"NodePublicKeyReplaced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"NodeAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"Amount\",\"type\":\"uint256\"}],\"name\":\"Staked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"NodeAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"Amount\",\"type\":\"uint256\"}],\"name\":\"Unstaked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"NodeAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"Amount\",\"type\":\"uint256\"}],\"name\":\"Withdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"NodeAddress\",\"type\":\"address\"}],\"name\":\"NodeAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"NodeAddress\",\"type\":\"address\"}],\"name\":\"NodeRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"NodeAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"Type\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"Arg1\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"Arg2\",\"type\":\"bytes\"}],\"name\":\"Reported\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"NodeAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"Amount\",\"type\":\"uint256\"}],\"name\":\"Fined\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"NodeAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"Amount\",\"type\":\"uint256\"}],\"name\":\"FinePaid\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"Round\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"BlockHeight\",\"type\":\"uint256\"}],\"name\":\"DKGReset\",\"type\":\"event\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/Users/aitjcize/Work/tangerine-network/node-staker/contracts/Governance.sol\":\"Governance\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/aitjcize/Work/tangerine-network/node-staker/contracts/Governance.sol\":{\"keccak256\":\"0xcfdc3785ac2c5c1937e80ca46b030d083952a66f22732cd80e440cc45675ea62\",\"urls\":[\"bzz-raw://5f33f67e58c7ddc0f100cd2fbe89f2a0a0169bda17742a3d633df62a7921d051\",\"dweb:/ipfs/QmSHtHd9VBagDzc4FaKRZ56pZkZ9Nu1AA7YjwyokhFRU5q\"]}},\"version\":1}",
+ "bytecode": "0x608060405234801561001057600080fd5b50611abc806100206000396000f3fe60806040526004361061038c5760003560e01c8063817b1cd2116101dc578063b03e75e411610102578063d96ed505116100a0578063ee947a7c1161006f578063ee947a7c1461144c578063f077165914611461578063f2fde38b1461148b578063f33de6c0146114be5761038c565b8063d96ed505146113c5578063dd2083d0146113da578063e746714d146113ef578063ed3fbdf9146114195761038c565b8063c5ea6ea1116100dc578063c5ea6ea114610e70578063d21abb78146110b0578063d242f4cc146110da578063d767fdc9146113925761038c565b8063b03e75e414610d8e578063b3606b5614610da3578063c448af3414610db85761038c565b806399aadb9a1161017a578063a9601a8d11610149578063a9601a8d14610d25578063ab6a401314610505578063ae1f289d14610d3a578063af58ef0614610d645761038c565b806399aadb9a14610c895780639bc9f48914610cb3578063a0488e5514610ce6578063a1e460eb14610cfb5761038c565b80638b649b94116101b65780638b649b9414610b8f5780638ca5516214610ba45780638d90a15914610bb95780638da5cb5b14610c585761038c565b8063817b1cd214610b325780638503112314610b475780638a59136914610b7a5761038c565b80633a4b66f1116102c15780634cb38c7a1161025f57806370f3ac541161022e57806370f3ac5414610a9a5780637877a79714610acd5780637a8c1c1e14610ae25780637ecfdeca14610af75761038c565b80634cb38c7a14610a705780634ccaa59d146105055780635018830114610a8557806357316157146105055761038c565b80633f007c201161029b5780633f007c20146105055780634264ecf914610a235780634773132514610a465780634c52321414610a5b5761038c565b80633a4b66f1146109e05780633ccfd60b146109e85780633edfa229146109fd5761038c565b806322f8a8891161032e5780632deb3316116103085780632deb33161461084f5780632e17de7814610864578063320c08261461088e578063375b3c0a146109cb5761038c565b806322f8a889146105055780632357e72a1461083a57806329891e74146105055761038c565b806318160ddd1161036a57806318160ddd146104f057806319cf10bc146105055780631c53c280146105b65780631f29f5c8146108255761038c565b8063072bf11a146103915780630b3441dc146103d857806311c7c321146103ff575b600080fd5b34801561039d57600080fd5b506103c4600480360360208110156103b457600080fd5b50356001600160a01b03166114d3565b604080519115158252519081900360200190f35b3480156103e457600080fd5b506103ed6114e8565b60408051918252519081900360200190f35b34801561040b57600080fd5b506104ee600480360361016081101561042357600080fd5b81359160208101359160408201359160608101359160808201359160a08101359160c08201359160e08101359161010082013591610120810135918101906101608101610140820135600160201b81111561047d57600080fd5b82018360208201111561048f57600080fd5b803590602001918460208302840111600160201b831117156104b057600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506114ee945050505050565b005b3480156104fc57600080fd5b506103ed611512565b34801561051157600080fd5b506104ee6004803603602081101561052857600080fd5b810190602081018135600160201b81111561054257600080fd5b82018360208201111561055457600080fd5b803590602001918460018302840111600160201b8311171561057557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611518945050505050565b3480156105c257600080fd5b506105e0600480360360208110156105d957600080fd5b503561151b565b604051808b6001600160a01b03166001600160a01b03168152602001806020018a81526020018981526020018060200180602001806020018060200188815260200187815260200186810386528f818151815260200191508051906020019080838360005b8381101561065d578181015183820152602001610645565b50505050905090810190601f16801561068a5780820380516001836020036101000a031916815260200191505b5086810385528c5181528c516020918201918e019080838360005b838110156106bd5781810151838201526020016106a5565b50505050905090810190601f1680156106ea5780820380516001836020036101000a031916815260200191505b5086810384528b5181528b516020918201918d019080838360005b8381101561071d578181015183820152602001610705565b50505050905090810190601f16801561074a5780820380516001836020036101000a031916815260200191505b5086810383528a5181528a516020918201918c019080838360005b8381101561077d578181015183820152602001610765565b50505050905090810190601f1680156107aa5780820380516001836020036101000a031916815260200191505b5086810382528951815289516020918201918b019080838360005b838110156107dd5781810151838201526020016107c5565b50505050905090810190601f16801561080a5780820380516001836020036101000a031916815260200191505b509f5050505050505050505050505050505060405180910390f35b34801561083157600080fd5b506103ed611845565b34801561084657600080fd5b506103ed61184b565b34801561085b57600080fd5b506103ed611851565b34801561087057600080fd5b506104ee6004803603602081101561088757600080fd5b5035611518565b34801561089a57600080fd5b506104ee600480360360608110156108b157600080fd5b81359190810190604081016020820135600160201b8111156108d257600080fd5b8201836020820111156108e457600080fd5b803590602001918460018302840111600160201b8311171561090557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561095757600080fd5b82018360208201111561096957600080fd5b803590602001918460018302840111600160201b8311171561098a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611857945050505050565b3480156109d757600080fd5b506103ed61185c565b6104ee611862565b3480156109f457600080fd5b506104ee611862565b6104ee60048036036020811015610a1357600080fd5b50356001600160a01b0316611518565b348015610a2f57600080fd5b506104ee60048036036020811015610a1357600080fd5b348015610a5257600080fd5b506103ed611864565b348015610a6757600080fd5b506103ed61186a565b348015610a7c57600080fd5b506103ed611870565b348015610a9157600080fd5b506103c4611876565b348015610aa657600080fd5b506103c460048036036020811015610abd57600080fd5b50356001600160a01b031661187b565b348015610ad957600080fd5b506103ed611890565b348015610aee57600080fd5b506103ed611896565b348015610b0357600080fd5b506104ee60048036036040811015610b1a57600080fd5b506001600160a01b038135811691602001351661189c565b348015610b3e57600080fd5b506103ed6118a0565b348015610b5357600080fd5b506103ed60048036036020811015610b6a57600080fd5b50356001600160a01b03166118a6565b348015610b8657600080fd5b506103ed6118b8565b348015610b9b57600080fd5b506103ed6118be565b348015610bb057600080fd5b506103ed6118c4565b348015610bc557600080fd5b50610be360048036036020811015610bdc57600080fd5b50356118ca565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610c1d578181015183820152602001610c05565b50505050905090810190601f168015610c4a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610c6457600080fd5b50610c6d611970565b604080516001600160a01b039092168252519081900360200190f35b348015610c9557600080fd5b506103ed60048036036020811015610cac57600080fd5b503561197f565b348015610cbf57600080fd5b506103c460048036036020811015610cd657600080fd5b50356001600160a01b0316611991565b348015610cf257600080fd5b506103ed6119a6565b348015610d0757600080fd5b506103c460048036036020811015610d1e57600080fd5b50356119ac565b348015610d3157600080fd5b506103ed6119c1565b348015610d4657600080fd5b506103ed60048036036020811015610d5d57600080fd5b50356119c7565b348015610d7057600080fd5b506103ed60048036036020811015610d8757600080fd5b50356119e5565b348015610d9a57600080fd5b506103ed6119f2565b348015610daf57600080fd5b506103ed6119f8565b348015610dc457600080fd5b506104ee60048036036040811015610ddb57600080fd5b81359190810190604081016020820135600160201b811115610dfc57600080fd5b820183602082011115610e0e57600080fd5b803590602001918460018302840111600160201b83111715610e2f57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061189c945050505050565b348015610e7c57600080fd5b506104ee60048036036080811015610e9357600080fd5b810190602081018135600160201b811115610ead57600080fd5b820183602082011115610ebf57600080fd5b803590602001918460018302840111600160201b83111715610ee057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115610f3257600080fd5b820183602082011115610f4457600080fd5b803590602001918460018302840111600160201b83111715610f6557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115610fb757600080fd5b820183602082011115610fc957600080fd5b803590602001918460018302840111600160201b83111715610fea57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561103c57600080fd5b82018360208201111561104e57600080fd5b803590602001918460018302840111600160201b8311171561106f57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506119fe945050505050565b3480156110bc57600080fd5b50610be3600480360360208110156110d357600080fd5b5035611a04565b6104ee600480360360a08110156110f057600080fd5b810190602081018135600160201b81111561110a57600080fd5b82018360208201111561111c57600080fd5b803590602001918460018302840111600160201b8311171561113d57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561118f57600080fd5b8201836020820111156111a157600080fd5b803590602001918460018302840111600160201b831117156111c257600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561121457600080fd5b82018360208201111561122657600080fd5b803590602001918460018302840111600160201b8311171561124757600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561129957600080fd5b8201836020820111156112ab57600080fd5b803590602001918460018302840111600160201b831117156112cc57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561131e57600080fd5b82018360208201111561133057600080fd5b803590602001918460018302840111600160201b8311171561135157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611a11945050505050565b34801561139e57600080fd5b506103ed600480360360208110156113b557600080fd5b50356001600160a01b0316611a18565b3480156113d157600080fd5b506103ed611a2a565b3480156113e657600080fd5b506103ed611a30565b3480156113fb57600080fd5b506103c46004803603602081101561141257600080fd5b5035611a36565b34801561142557600080fd5b506103ed6004803603602081101561143c57600080fd5b50356001600160a01b0316611a4b565b34801561145857600080fd5b506103ed611a5d565b34801561146d57600080fd5b506103ed6004803603602081101561148457600080fd5b5035611a63565b34801561149757600080fd5b506104ee600480360360208110156114ae57600080fd5b50356001600160a01b0316611a70565b3480156114ca57600080fd5b506103ed611876565b60136020526000908152604090205460ff1681565b601f5481565b6015546001600160a01b0316331461150557600080fd5b5050505050505050505050565b60015481565b50565b6003818154811061152857fe5b6000918252602091829020600a9091020180546001808301805460408051601f60026000199685161561010002969096019093169490940491820187900487028401870190528083526001600160a01b0390931695509293909291908301828280156115d55780601f106115aa576101008083540402835291602001916115d5565b820191906000526020600020905b8154815290600101906020018083116115b857829003601f168201915b505050505090806002015490806003015490806004018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561167f5780601f106116545761010080835404028352916020019161167f565b820191906000526020600020905b81548152906001019060200180831161166257829003601f168201915b5050505060058301805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815294959493509083018282801561170f5780601f106116e45761010080835404028352916020019161170f565b820191906000526020600020905b8154815290600101906020018083116116f257829003601f168201915b5050505060068301805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815294959493509083018282801561179f5780601f106117745761010080835404028352916020019161179f565b820191906000526020600020905b81548152906001019060200180831161178257829003601f168201915b5050505060078301805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815294959493509083018282801561182f5780601f106118045761010080835404028352916020019161182f565b820191906000526020600020905b81548152906001019060200180831161181257829003601f168201915b505050505090806008015490806009015490508a565b60215481565b60185481565b601d5481565b505050565b60165481565b565b60075481565b60205481565b60145481565b600090565b60116020526000908152604090205460ff1681565b601c5481565b60095481565b5050565b60025481565b60046020526000908152604090205481565b60085481565b60225481565b60195481565b600d81815481106118d757fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152935090918301828280156119685780601f1061193d57610100808354040283529160200191611968565b820191906000526020600020905b81548152906001019060200180831161194b57829003601f168201915b505050505081565b6015546001600160a01b031681565b600c6020526000908152604090205481565b600f6020526000908152604090205460ff1681565b601a5481565b60256020526000908152604090205460ff1681565b601e5481565b602481815481106119d457fe5b600091825260209091200154905081565b600081815481106119d457fe5b60105481565b60235481565b50505050565b600b81815481106118d757fe5b5050505050565b60066020526000908152604090205481565b601b5481565b60125481565b600e6020526000908152604090205460ff1681565b60056020526000908152604090205481565b60175481565b600a81815481106119d457fe5b6015546001600160a01b0316331461151857600080fdfea265627a7a7231582074565603076f576f6642f987e21dfb51c9448a51fe642cb28bad70cdc624d53064736f6c634300050b0032",
+ "deployedBytecode": "0x60806040526004361061038c5760003560e01c8063817b1cd2116101dc578063b03e75e411610102578063d96ed505116100a0578063ee947a7c1161006f578063ee947a7c1461144c578063f077165914611461578063f2fde38b1461148b578063f33de6c0146114be5761038c565b8063d96ed505146113c5578063dd2083d0146113da578063e746714d146113ef578063ed3fbdf9146114195761038c565b8063c5ea6ea1116100dc578063c5ea6ea114610e70578063d21abb78146110b0578063d242f4cc146110da578063d767fdc9146113925761038c565b8063b03e75e414610d8e578063b3606b5614610da3578063c448af3414610db85761038c565b806399aadb9a1161017a578063a9601a8d11610149578063a9601a8d14610d25578063ab6a401314610505578063ae1f289d14610d3a578063af58ef0614610d645761038c565b806399aadb9a14610c895780639bc9f48914610cb3578063a0488e5514610ce6578063a1e460eb14610cfb5761038c565b80638b649b94116101b65780638b649b9414610b8f5780638ca5516214610ba45780638d90a15914610bb95780638da5cb5b14610c585761038c565b8063817b1cd214610b325780638503112314610b475780638a59136914610b7a5761038c565b80633a4b66f1116102c15780634cb38c7a1161025f57806370f3ac541161022e57806370f3ac5414610a9a5780637877a79714610acd5780637a8c1c1e14610ae25780637ecfdeca14610af75761038c565b80634cb38c7a14610a705780634ccaa59d146105055780635018830114610a8557806357316157146105055761038c565b80633f007c201161029b5780633f007c20146105055780634264ecf914610a235780634773132514610a465780634c52321414610a5b5761038c565b80633a4b66f1146109e05780633ccfd60b146109e85780633edfa229146109fd5761038c565b806322f8a8891161032e5780632deb3316116103085780632deb33161461084f5780632e17de7814610864578063320c08261461088e578063375b3c0a146109cb5761038c565b806322f8a889146105055780632357e72a1461083a57806329891e74146105055761038c565b806318160ddd1161036a57806318160ddd146104f057806319cf10bc146105055780631c53c280146105b65780631f29f5c8146108255761038c565b8063072bf11a146103915780630b3441dc146103d857806311c7c321146103ff575b600080fd5b34801561039d57600080fd5b506103c4600480360360208110156103b457600080fd5b50356001600160a01b03166114d3565b604080519115158252519081900360200190f35b3480156103e457600080fd5b506103ed6114e8565b60408051918252519081900360200190f35b34801561040b57600080fd5b506104ee600480360361016081101561042357600080fd5b81359160208101359160408201359160608101359160808201359160a08101359160c08201359160e08101359161010082013591610120810135918101906101608101610140820135600160201b81111561047d57600080fd5b82018360208201111561048f57600080fd5b803590602001918460208302840111600160201b831117156104b057600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506114ee945050505050565b005b3480156104fc57600080fd5b506103ed611512565b34801561051157600080fd5b506104ee6004803603602081101561052857600080fd5b810190602081018135600160201b81111561054257600080fd5b82018360208201111561055457600080fd5b803590602001918460018302840111600160201b8311171561057557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611518945050505050565b3480156105c257600080fd5b506105e0600480360360208110156105d957600080fd5b503561151b565b604051808b6001600160a01b03166001600160a01b03168152602001806020018a81526020018981526020018060200180602001806020018060200188815260200187815260200186810386528f818151815260200191508051906020019080838360005b8381101561065d578181015183820152602001610645565b50505050905090810190601f16801561068a5780820380516001836020036101000a031916815260200191505b5086810385528c5181528c516020918201918e019080838360005b838110156106bd5781810151838201526020016106a5565b50505050905090810190601f1680156106ea5780820380516001836020036101000a031916815260200191505b5086810384528b5181528b516020918201918d019080838360005b8381101561071d578181015183820152602001610705565b50505050905090810190601f16801561074a5780820380516001836020036101000a031916815260200191505b5086810383528a5181528a516020918201918c019080838360005b8381101561077d578181015183820152602001610765565b50505050905090810190601f1680156107aa5780820380516001836020036101000a031916815260200191505b5086810382528951815289516020918201918b019080838360005b838110156107dd5781810151838201526020016107c5565b50505050905090810190601f16801561080a5780820380516001836020036101000a031916815260200191505b509f5050505050505050505050505050505060405180910390f35b34801561083157600080fd5b506103ed611845565b34801561084657600080fd5b506103ed61184b565b34801561085b57600080fd5b506103ed611851565b34801561087057600080fd5b506104ee6004803603602081101561088757600080fd5b5035611518565b34801561089a57600080fd5b506104ee600480360360608110156108b157600080fd5b81359190810190604081016020820135600160201b8111156108d257600080fd5b8201836020820111156108e457600080fd5b803590602001918460018302840111600160201b8311171561090557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561095757600080fd5b82018360208201111561096957600080fd5b803590602001918460018302840111600160201b8311171561098a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611857945050505050565b3480156109d757600080fd5b506103ed61185c565b6104ee611862565b3480156109f457600080fd5b506104ee611862565b6104ee60048036036020811015610a1357600080fd5b50356001600160a01b0316611518565b348015610a2f57600080fd5b506104ee60048036036020811015610a1357600080fd5b348015610a5257600080fd5b506103ed611864565b348015610a6757600080fd5b506103ed61186a565b348015610a7c57600080fd5b506103ed611870565b348015610a9157600080fd5b506103c4611876565b348015610aa657600080fd5b506103c460048036036020811015610abd57600080fd5b50356001600160a01b031661187b565b348015610ad957600080fd5b506103ed611890565b348015610aee57600080fd5b506103ed611896565b348015610b0357600080fd5b506104ee60048036036040811015610b1a57600080fd5b506001600160a01b038135811691602001351661189c565b348015610b3e57600080fd5b506103ed6118a0565b348015610b5357600080fd5b506103ed60048036036020811015610b6a57600080fd5b50356001600160a01b03166118a6565b348015610b8657600080fd5b506103ed6118b8565b348015610b9b57600080fd5b506103ed6118be565b348015610bb057600080fd5b506103ed6118c4565b348015610bc557600080fd5b50610be360048036036020811015610bdc57600080fd5b50356118ca565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610c1d578181015183820152602001610c05565b50505050905090810190601f168015610c4a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610c6457600080fd5b50610c6d611970565b604080516001600160a01b039092168252519081900360200190f35b348015610c9557600080fd5b506103ed60048036036020811015610cac57600080fd5b503561197f565b348015610cbf57600080fd5b506103c460048036036020811015610cd657600080fd5b50356001600160a01b0316611991565b348015610cf257600080fd5b506103ed6119a6565b348015610d0757600080fd5b506103c460048036036020811015610d1e57600080fd5b50356119ac565b348015610d3157600080fd5b506103ed6119c1565b348015610d4657600080fd5b506103ed60048036036020811015610d5d57600080fd5b50356119c7565b348015610d7057600080fd5b506103ed60048036036020811015610d8757600080fd5b50356119e5565b348015610d9a57600080fd5b506103ed6119f2565b348015610daf57600080fd5b506103ed6119f8565b348015610dc457600080fd5b506104ee60048036036040811015610ddb57600080fd5b81359190810190604081016020820135600160201b811115610dfc57600080fd5b820183602082011115610e0e57600080fd5b803590602001918460018302840111600160201b83111715610e2f57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061189c945050505050565b348015610e7c57600080fd5b506104ee60048036036080811015610e9357600080fd5b810190602081018135600160201b811115610ead57600080fd5b820183602082011115610ebf57600080fd5b803590602001918460018302840111600160201b83111715610ee057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115610f3257600080fd5b820183602082011115610f4457600080fd5b803590602001918460018302840111600160201b83111715610f6557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115610fb757600080fd5b820183602082011115610fc957600080fd5b803590602001918460018302840111600160201b83111715610fea57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561103c57600080fd5b82018360208201111561104e57600080fd5b803590602001918460018302840111600160201b8311171561106f57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506119fe945050505050565b3480156110bc57600080fd5b50610be3600480360360208110156110d357600080fd5b5035611a04565b6104ee600480360360a08110156110f057600080fd5b810190602081018135600160201b81111561110a57600080fd5b82018360208201111561111c57600080fd5b803590602001918460018302840111600160201b8311171561113d57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561118f57600080fd5b8201836020820111156111a157600080fd5b803590602001918460018302840111600160201b831117156111c257600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561121457600080fd5b82018360208201111561122657600080fd5b803590602001918460018302840111600160201b8311171561124757600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561129957600080fd5b8201836020820111156112ab57600080fd5b803590602001918460018302840111600160201b831117156112cc57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561131e57600080fd5b82018360208201111561133057600080fd5b803590602001918460018302840111600160201b8311171561135157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611a11945050505050565b34801561139e57600080fd5b506103ed600480360360208110156113b557600080fd5b50356001600160a01b0316611a18565b3480156113d157600080fd5b506103ed611a2a565b3480156113e657600080fd5b506103ed611a30565b3480156113fb57600080fd5b506103c46004803603602081101561141257600080fd5b5035611a36565b34801561142557600080fd5b506103ed6004803603602081101561143c57600080fd5b50356001600160a01b0316611a4b565b34801561145857600080fd5b506103ed611a5d565b34801561146d57600080fd5b506103ed6004803603602081101561148457600080fd5b5035611a63565b34801561149757600080fd5b506104ee600480360360208110156114ae57600080fd5b50356001600160a01b0316611a70565b3480156114ca57600080fd5b506103ed611876565b60136020526000908152604090205460ff1681565b601f5481565b6015546001600160a01b0316331461150557600080fd5b5050505050505050505050565b60015481565b50565b6003818154811061152857fe5b6000918252602091829020600a9091020180546001808301805460408051601f60026000199685161561010002969096019093169490940491820187900487028401870190528083526001600160a01b0390931695509293909291908301828280156115d55780601f106115aa576101008083540402835291602001916115d5565b820191906000526020600020905b8154815290600101906020018083116115b857829003601f168201915b505050505090806002015490806003015490806004018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561167f5780601f106116545761010080835404028352916020019161167f565b820191906000526020600020905b81548152906001019060200180831161166257829003601f168201915b5050505060058301805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815294959493509083018282801561170f5780601f106116e45761010080835404028352916020019161170f565b820191906000526020600020905b8154815290600101906020018083116116f257829003601f168201915b5050505060068301805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815294959493509083018282801561179f5780601f106117745761010080835404028352916020019161179f565b820191906000526020600020905b81548152906001019060200180831161178257829003601f168201915b5050505060078301805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815294959493509083018282801561182f5780601f106118045761010080835404028352916020019161182f565b820191906000526020600020905b81548152906001019060200180831161181257829003601f168201915b505050505090806008015490806009015490508a565b60215481565b60185481565b601d5481565b505050565b60165481565b565b60075481565b60205481565b60145481565b600090565b60116020526000908152604090205460ff1681565b601c5481565b60095481565b5050565b60025481565b60046020526000908152604090205481565b60085481565b60225481565b60195481565b600d81815481106118d757fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152935090918301828280156119685780601f1061193d57610100808354040283529160200191611968565b820191906000526020600020905b81548152906001019060200180831161194b57829003601f168201915b505050505081565b6015546001600160a01b031681565b600c6020526000908152604090205481565b600f6020526000908152604090205460ff1681565b601a5481565b60256020526000908152604090205460ff1681565b601e5481565b602481815481106119d457fe5b600091825260209091200154905081565b600081815481106119d457fe5b60105481565b60235481565b50505050565b600b81815481106118d757fe5b5050505050565b60066020526000908152604090205481565b601b5481565b60125481565b600e6020526000908152604090205460ff1681565b60056020526000908152604090205481565b60175481565b600a81815481106119d457fe5b6015546001600160a01b0316331461151857600080fdfea265627a7a7231582074565603076f576f6642f987e21dfb51c9448a51fe642cb28bad70cdc624d53064736f6c634300050b0032",
+ "sourceMap": "26:7074:1:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26:7074:1;;;;;;;",
+ "deployedSourceMap": "26:7074:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1916:44;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1916:44:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1916:44:1;-1:-1:-1;;;;;1916:44:1;;:::i;:::-;;;;;;;;;;;;;;;;;;2712:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2712:28:1;;;:::i;:::-;;;;;;;;;;;;;;;;4454:398;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4454:398:1;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;4454:398:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;4454:398:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4454:398:1;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;4454:398:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;4454:398:1;;-1:-1:-1;4454:398:1;;-1:-1:-1;;;;;4454:398:1:i;:::-;;574:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;574:26:1;;;:::i;4995:69::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4995:69:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4995:69:1;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;4995:69:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4995:69:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;4995:69:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;4995:69:1;;-1:-1:-1;4995:69:1;;-1:-1:-1;;;;;4995:69:1:i;680:19::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;680:19:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;680:19:1;;:::i;:::-;;;;;-1:-1:-1;;;;;680:19:1;-1:-1:-1;;;;;680:19:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;680:19:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;680:19:1;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;680:19:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;680:19:1;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;680:19:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;680:19:1;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;680:19:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;680:19:1;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;680:19:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2902:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2902:30:1;;;:::i;2223:29::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2223:29:1;;;:::i;2589:23::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2589:23:1;;;:::i;6701:47::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6701:47:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6701:47:1;;:::i;5702:82::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5702:82:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5702:82:1;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;5702:82:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5702:82:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;5702:82:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;5702:82:1;;;;;;;;-1:-1:-1;5702:82:1;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;5702:82:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5702:82:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;5702:82:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;5702:82:1;;-1:-1:-1;5702:82:1;;-1:-1:-1;;;;;5702:82:1:i;2108:23::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2108:23:1;;;:::i;6371:39::-;;;:::i;6978:34::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6978:34:1;;;:::i;5381:60::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5381:60:1;-1:-1:-1;;;;;5381:60:1;;:::i;6455:63::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6455:63:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;1092:23:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1092:23:1;;;:::i;2787:31::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2787:31:1;;;:::i;1996:32::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1996:32:1;;;:::i;7040:58::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7040:58:1;;;:::i;1770:45::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1770:45:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1770:45:1;-1:-1:-1;;;;;1770:45:1;;:::i;2516:28::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2516:28:1;;;:::i;1182:23::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1182:23:1;;;:::i;6585:93::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6585:93:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6585:93:1;;;;;;;;;;:::i;630:26::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;630:26:1;;;:::i;764:54::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;764:54:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;764:54:1;-1:-1:-1;;;;;764:54:1;;:::i;1137:18::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1137:18:1;;;:::i;3000:26::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3000:26:1;;;:::i;2325:32::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2325:32:1;;;:::i;1474:28::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1474:28:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1474:28:1;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1474:28:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2061:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2061:20:1;;;:::i;:::-;;;;-1:-1:-1;;;;;2061:20:1;;;;;;;;;;;;;;1383:59;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1383:59:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1383:59:1;;:::i;1626:44::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1626:44:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1626:44:1;-1:-1:-1;;;;;1626:44:1;;:::i;2393:31::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2393:31:1;;;:::i;3183:44::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3183:44:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3183:44:1;;:::i;2634:24::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2634:24:1;;;:::i;3123:27::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3123:27:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3123:27:1;;:::i;517:28::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;517:28:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;517:28:1;;:::i;1706:32::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1706:32:1;;;:::i;3062:31::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3062:31:1;;;:::i;5580:73::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5580:73:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5580:73:1;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;5580:73:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5580:73:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;5580:73:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;5580:73:1;;-1:-1:-1;5580:73:1;;-1:-1:-1;;;;;5580:73:1:i;6804:150::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6804:150:1;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;6804:150:1;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6804:150:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6804:150:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6804:150:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;6804:150:1;;;;;;;;-1:-1:-1;6804:150:1;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;6804:150:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6804:150:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6804:150:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;6804:150:1;;;;;;;;-1:-1:-1;6804:150:1;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;6804:150:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6804:150:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6804:150:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;6804:150:1;;;;;;;;-1:-1:-1;6804:150:1;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;6804:150:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6804:150:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6804:150:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;6804:150:1;;-1:-1:-1;6804:150:1;;-1:-1:-1;;;;;6804:150:1:i;1306:34::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1306:34:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1306:34:1;;:::i;6039:192::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;6039:192:1;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6039:192:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6039:192:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6039:192:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;6039:192:1;;;;;;;;-1:-1:-1;6039:192:1;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;6039:192:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6039:192:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6039:192:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;6039:192:1;;;;;;;;-1:-1:-1;6039:192:1;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;6039:192:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6039:192:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6039:192:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;6039:192:1;;;;;;;;-1:-1:-1;6039:192:1;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;6039:192:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6039:192:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6039:192:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;6039:192:1;;;;;;;;-1:-1:-1;6039:192:1;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;6039:192:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6039:192:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6039:192:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;6039:192:1;;-1:-1:-1;6039:192:1;;-1:-1:-1;;;;;6039:192:1:i;1012:53::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1012:53:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1012:53:1;-1:-1:-1;;;;;1012:53:1;;:::i;2457:26::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2457:26:1;;;:::i;1852:33::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1852:33:1;;;:::i;1542:53::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1542:53:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1542:53:1;;:::i;907:61::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;907:61:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;907:61:1;-1:-1:-1;;;;;907:61:1;;:::i;2162:27::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2162:27:1;;;:::i;1238:30::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1238:30:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1238:30:1;;:::i;4347:69::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4347:69:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4347:69:1;-1:-1:-1;;;;;4347:69:1;;:::i;5478:60::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5478:60:1;;;:::i;1916:44::-;;;;;;;;;;;;;;;:::o;2712:28::-;;;;:::o;4454:398::-;3341:5;;-1:-1:-1;;;;;3341:5:1;3327:10;:19;3319:28;;;;;;4454:398;;;;;;;;;;;:::o;574:26::-;;;;:::o;4995:69::-;;:::o;680:19::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;680:19:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;680:19:1;;;;-1:-1:-1;680:19:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;680:19:1;;;;;;;;;;;;;;;;-1:-1:-1;;680:19:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;680:19:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;680:19:1;;;;;;;;;;;;;;;;-1:-1:-1;;680:19:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;680:19:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;680:19:1;;;;;;;;;;;;;;;;-1:-1:-1;;680:19:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;680:19:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2902:30::-;;;;:::o;2223:29::-;;;;:::o;2589:23::-;;;;:::o;5702:82::-;;;;:::o;2108:23::-;;;;:::o;6371:39::-;:::o;1092:23::-;;;;:::o;2787:31::-;;;;:::o;1996:32::-;;;;:::o;7040:58::-;7085:4;7040:58;:::o;1770:45::-;;;;;;;;;;;;;;;:::o;2516:28::-;;;;:::o;1182:23::-;;;;:::o;6585:93::-;;;:::o;630:26::-;;;;:::o;764:54::-;;;;;;;;;;;;;:::o;1137:18::-;;;;:::o;3000:26::-;;;;:::o;2325:32::-;;;;:::o;1474:28::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1474:28:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1474:28:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2061:20::-;;;-1:-1:-1;;;;;2061:20:1;;:::o;1383:59::-;;;;;;;;;;;;;:::o;1626:44::-;;;;;;;;;;;;;;;:::o;2393:31::-;;;;:::o;3183:44::-;;;;;;;;;;;;;;;:::o;2634:24::-;;;;:::o;3123:27::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3123:27:1;:::o;517:28::-;;;;;;;;;;1706:32;;;;:::o;3062:31::-;;;;:::o;6804:150::-;;;;;:::o;1306:34::-;;;;;;;;;;6039:192;;;;;;:::o;1012:53::-;;;;;;;;;;;;;:::o;2457:26::-;;;;:::o;1852:33::-;;;;:::o;1542:53::-;;;;;;;;;;;;;;;:::o;907:61::-;;;;;;;;;;;;;:::o;2162:27::-;;;;:::o;1238:30::-;;;;;;;;;;4347:69;3341:5;;-1:-1:-1;;;;;3341:5:1;3327:10;:19;3319:28;;;;",
+ "source": "pragma solidity ^0.5.11;\n\ncontract Governance {\n // Nodes.\n struct Node {\n address owner;\n bytes publicKey;\n uint256 staked;\n uint256 fined;\n string name;\n string email;\n string location;\n string url;\n uint256 unstaked;\n uint256 unstakedAt;\n }\n\n // ReportType.\n enum ReportType {\n FAIL_STOP,\n FAIL_STOP_DKG,\n INVALID_DKG,\n FORK_VOTE,\n FORK_BLOCK\n }\n\n // 0: round to blockHeight mapping.\n uint256[] public roundHeight;\n\n // 1: totalSupply\n uint256 public totalSupply;\n\n // 2: totalStaked.\n uint256 public totalStaked;\n\n // 3: nodes.\n Node[] public nodes;\n\n // 4: stores the array index + 1 of nodes by address.\n mapping(address => int256) public nodesOffsetByAddress;\n\n // 5: stores the array index + 1 of nodes by address represented by node key.\n mapping(address => int256) public nodesOffsetByNodeKeyAddress;\n\n // 6: last proposed blockheight.\n mapping(address => uint256) public lastProposedHeight;\n\n // 7: crsRound.\n uint256 public crsRound;\n\n // 8: crs.\n bytes32 public crs;\n\n // 9: dkgRound.\n uint256 public dkgRound;\n\n // 10: dkgResetCount.\n uint256[] public dkgResetCount;\n\n // 11: dkgMasterPublicKeys\n bytes[] public dkgMasterPublicKeys;\n\n // 12: dkgMasterPublicKeyOffset\n mapping(bytes32 => uint256) public dkgMasterPublicKeyOffset;\n\n // 13: dkgComplaints\n bytes[] public dkgComplaints;\n\n // 14: dkgComplaintsProposed\n mapping(bytes32 => bool) public dkgComplaintsProposed;\n\n // 15: dkgMPKReadys\n mapping(address => bool) public dkgMPKReadys;\n\n // 16: dkgMPKReadysCount\n uint256 public dkgMPKReadysCount;\n\n // 17: dkgFinalizeds\n mapping(address => bool) public dkgFinalizeds;\n\n // 18: dkgFinalizedsCount\n uint256 public dkgFinalizedsCount;\n\n // 19: dkgSuccesses\n mapping(address => bool) public dkgSuccesses;\n\n // 20: dkgSuccessesCount\n uint256 public dkgSuccessesCount;\n\n // 21: owner address.\n address public owner;\n\n // 22: minStake\n uint256 public minStake;\n\n // 23: lockupPeriod\n uint256 public lockupPeriod;\n\n // 24: miningVelocity.\n uint256 public miningVelocity; // stored as miningVelocity * 10^8\n\n // 25: nextHalvingSupply.\n uint256 public nextHalvingSupply;\n\n // 26: lastHalvedAmount.\n uint256 public lastHalvedAmount;\n\n // 27: min gas price.\n uint256 public minGasPrice;\n\n // 28: blockGasLimit.\n uint256 public blockGasLimit;\n\n // Lambda related.\n // 29: BA.\n uint256 public lambdaBA;\n // 30: DKG.\n uint256 public lambdaDKG;\n\n // Set related.\n // 31: notary set size\n uint256 public notarySetSize;\n\n // 32: notary set parameter: alpha.\n uint256 public notaryParamAlpha; // stored as notaryParamAlpha * 10^8\n\n // 33: notary set parameter: beta.\n uint256 public notaryParamBeta; // stored as notaryParamBeta * 10^8\n\n // 34: roundLength.\n uint256 public roundLength;\n\n // 35: minBlockInterval.\n uint256 public minBlockInterval;\n\n // 36: Fine value.\n uint256[] public fineValues;\n\n // 37: Fined records.\n mapping(bytes32 => bool) public finedRecords;\n\n // ----------\n // Modifiers.\n // ----------\n modifier onlyOwner() {\n require(msg.sender == owner);\n _;\n }\n\n // -------\n // Events.\n // -------\n event ConfigurationChanged();\n event CRSProposed(uint256 indexed Round, bytes32 CRS);\n event NodeOwnershipTransfered(address indexed NodeAddress, address indexed NewOwnerAddress);\n event NodePublicKeyReplaced(address indexed NodeAddress, bytes PublicKey);\n event Staked(address indexed NodeAddress, uint256 Amount);\n event Unstaked(address indexed NodeAddress, uint256 Amount);\n event Withdrawn(address indexed NodeAddress, uint256 Amount);\n event NodeAdded(address indexed NodeAddress);\n event NodeRemoved(address indexed NodeAddress);\n event Reported(address indexed NodeAddress, uint256 Type, bytes Arg1, bytes Arg2);\n event Fined(address indexed NodeAddress, uint256 Amount);\n event FinePaid(address indexed NodeAddress, uint256 Amount);\n event DKGReset(uint256 indexed Round, uint256 BlockHeight);\n\n // ---------\n // Protocol.\n // ---------\n\n // transferOwnership(newOwner)\n function transferOwnership(address NewOwner) public onlyOwner {\n }\n\n // UpdateConfiguration(...)\n function updateConfiguration(\n uint256 MinStake,\n uint256 LockupPeriod,\n uint256 MinGasPrice,\n uint256 BlockGasLimit,\n uint256 LambdaBA,\n uint256 LambdaDKG,\n uint256 NotaryParamAlpha,\n uint256 NotaryParamBeta,\n uint256 RoundLength,\n uint256 MinBlockInterval,\n uint256[] memory FineValues)\n public onlyOwner {\n }\n\n // AddDKGComplaint(complaint)\n function addDKGComplaint(bytes memory Complaint) public {\n }\n\n // AddDKGMasterPublicKey(key)\n function addDKGMasterPublicKey(bytes memory PublicKey) public {\n }\n\n // AddDKGMPKReady(ready)\n function addDKGMPKReady(bytes memory MPKReady) public {\n }\n\n // AddDKGFinalize(finalize)\n function addDKGFinalize(bytes memory Finalize) public {\n }\n\n // AddDKGSuccess(success)\n function addDKGSuccess(bytes memory Success) public {\n }\n\n // PayFine(node)\n function payFine(address NodeAddress) public payable {\n }\n\n // Return number of nodes.\n function nodesLength() view public returns (uint256) {\n }\n\n // ProposeCRS(round, signedCRS)\n function proposeCRS(uint256 Round, bytes memory SignedCRS) public {\n }\n\n // Report(enum type, bytes[] payloads)\n function report(uint256 Type, bytes memory Arg1, bytes memory Arg2) public {\n }\n\n // ResetDKG(newSignedCRS)\n function resetDKG(bytes memory NewSignedCRS) public {\n }\n\n\n // ------------------------\n // Node Related operations.\n // ------------------------\n\n // Register(public_key, name, email, location, url)\n function register(bytes memory PublicKey, string memory Name,\n string memory Email, string memory Location,\n string memory Url) public payable {\n }\n\n // ReplaceNodePublicKey(newPublicKey)\n function replaceNodePublicKey(bytes memory NewPublicKey) public {\n }\n\n // Stake()\n function stake() public payable {\n }\n\n // transferNodeOwnership(newOwner)\n function transferNodeOwnership(address NewOwner) public {\n }\n\n // transferNodeOwnershipByFoundation(oldOwner, newOwner)\n function transferNodeOwnershipByFoundation(address OldOwner, address NewOwner) public {\n }\n\n // Unstake()\n function unstake(uint256 Amount) public {\n }\n\n // UpdateNodeInfo(name, email, location, url)\n function updateNodeInfo(string memory Name, string memory Email,\n string memory Location, string memory Url) public {\n }\n\n // Withdraw()\n function withdraw() public {\n }\n\n // Withdrawable()\n function withdrawable() public view returns (bool) {\n }\n}\n",
+ "sourcePath": "/Users/aitjcize/Work/tangerine-network/node-staker/contracts/Governance.sol",
+ "ast": {
+ "absolutePath": "/Users/aitjcize/Work/tangerine-network/node-staker/contracts/Governance.sol",
+ "exportedSymbols": {
+ "Governance": [
+ 430
+ ]
+ },
+ "id": 431,
+ "nodeType": "SourceUnit",
+ "nodes": [
+ {
+ "id": 48,
+ "literals": [
+ "solidity",
+ "^",
+ "0.5",
+ ".11"
+ ],
+ "nodeType": "PragmaDirective",
+ "src": "0:24:1"
+ },
+ {
+ "baseContracts": [],
+ "contractDependencies": [],
+ "contractKind": "contract",
+ "documentation": null,
+ "fullyImplemented": true,
+ "id": 430,
+ "linearizedBaseContracts": [
+ 430
+ ],
+ "name": "Governance",
+ "nodeType": "ContractDefinition",
+ "nodes": [
+ {
+ "canonicalName": "Governance.Node",
+ "id": 69,
+ "members": [
+ {
+ "constant": false,
+ "id": 50,
+ "name": "owner",
+ "nodeType": "VariableDeclaration",
+ "scope": 69,
+ "src": "88:13:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 49,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "88:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 52,
+ "name": "publicKey",
+ "nodeType": "VariableDeclaration",
+ "scope": 69,
+ "src": "111:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 51,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "111:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 54,
+ "name": "staked",
+ "nodeType": "VariableDeclaration",
+ "scope": 69,
+ "src": "136:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 53,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "136:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 56,
+ "name": "fined",
+ "nodeType": "VariableDeclaration",
+ "scope": 69,
+ "src": "160:13:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 55,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "160:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 58,
+ "name": "name",
+ "nodeType": "VariableDeclaration",
+ "scope": 69,
+ "src": "183:11:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 57,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "183:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 60,
+ "name": "email",
+ "nodeType": "VariableDeclaration",
+ "scope": 69,
+ "src": "204:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 59,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "204:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 62,
+ "name": "location",
+ "nodeType": "VariableDeclaration",
+ "scope": 69,
+ "src": "226:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 61,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "226:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 64,
+ "name": "url",
+ "nodeType": "VariableDeclaration",
+ "scope": 69,
+ "src": "251:10:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 63,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "251:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 66,
+ "name": "unstaked",
+ "nodeType": "VariableDeclaration",
+ "scope": 69,
+ "src": "271:16:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 65,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "271:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 68,
+ "name": "unstakedAt",
+ "nodeType": "VariableDeclaration",
+ "scope": 69,
+ "src": "297:18:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 67,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "297:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "name": "Node",
+ "nodeType": "StructDefinition",
+ "scope": 430,
+ "src": "66:256:1",
+ "visibility": "public"
+ },
+ {
+ "canonicalName": "Governance.ReportType",
+ "id": 75,
+ "members": [
+ {
+ "id": 70,
+ "name": "FAIL_STOP",
+ "nodeType": "EnumValue",
+ "src": "373:9:1"
+ },
+ {
+ "id": 71,
+ "name": "FAIL_STOP_DKG",
+ "nodeType": "EnumValue",
+ "src": "392:13:1"
+ },
+ {
+ "id": 72,
+ "name": "INVALID_DKG",
+ "nodeType": "EnumValue",
+ "src": "415:11:1"
+ },
+ {
+ "id": 73,
+ "name": "FORK_VOTE",
+ "nodeType": "EnumValue",
+ "src": "436:9:1"
+ },
+ {
+ "id": 74,
+ "name": "FORK_BLOCK",
+ "nodeType": "EnumValue",
+ "src": "455:10:1"
+ }
+ ],
+ "name": "ReportType",
+ "nodeType": "EnumDefinition",
+ "src": "347:124:1"
+ },
+ {
+ "constant": false,
+ "id": 78,
+ "name": "roundHeight",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "517:28:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
+ "typeString": "uint256[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 76,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "517:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 77,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "517:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
+ "typeString": "uint256[]"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 80,
+ "name": "totalSupply",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "574:26:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 79,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "574:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 82,
+ "name": "totalStaked",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "630:26:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 81,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "630:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 85,
+ "name": "nodes",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "680:19:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_Node_$69_storage_$dyn_storage",
+ "typeString": "struct Governance.Node[]"
+ },
+ "typeName": {
+ "baseType": {
+ "contractScope": null,
+ "id": 83,
+ "name": "Node",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 69,
+ "src": "680:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$69_storage_ptr",
+ "typeString": "struct Governance.Node"
+ }
+ },
+ "id": 84,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "680:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_Node_$69_storage_$dyn_storage_ptr",
+ "typeString": "struct Governance.Node[]"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 89,
+ "name": "nodesOffsetByAddress",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "764:54:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
+ "typeString": "mapping(address => int256)"
+ },
+ "typeName": {
+ "id": 88,
+ "keyType": {
+ "id": 86,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "772:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Mapping",
+ "src": "764:26:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
+ "typeString": "mapping(address => int256)"
+ },
+ "valueType": {
+ "id": 87,
+ "name": "int256",
+ "nodeType": "ElementaryTypeName",
+ "src": "783:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_int256",
+ "typeString": "int256"
+ }
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 93,
+ "name": "nodesOffsetByNodeKeyAddress",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "907:61:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
+ "typeString": "mapping(address => int256)"
+ },
+ "typeName": {
+ "id": 92,
+ "keyType": {
+ "id": 90,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "915:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Mapping",
+ "src": "907:26:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
+ "typeString": "mapping(address => int256)"
+ },
+ "valueType": {
+ "id": 91,
+ "name": "int256",
+ "nodeType": "ElementaryTypeName",
+ "src": "926:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_int256",
+ "typeString": "int256"
+ }
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 97,
+ "name": "lastProposedHeight",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "1012:53:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ },
+ "typeName": {
+ "id": 96,
+ "keyType": {
+ "id": 94,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "1020:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Mapping",
+ "src": "1012:27:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ },
+ "valueType": {
+ "id": 95,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1031:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 99,
+ "name": "crsRound",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "1092:23:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 98,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1092:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 101,
+ "name": "crs",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "1137:18:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 100,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "1137:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 103,
+ "name": "dkgRound",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "1182:23:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 102,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1182:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 106,
+ "name": "dkgResetCount",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "1238:30:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
+ "typeString": "uint256[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 104,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1238:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 105,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "1238:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
+ "typeString": "uint256[]"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 109,
+ "name": "dkgMasterPublicKeys",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "1306:34:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage",
+ "typeString": "bytes[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 107,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "1306:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "id": 108,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "1306:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
+ "typeString": "bytes[]"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 113,
+ "name": "dkgMasterPublicKeyOffset",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "1383:59:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
+ "typeString": "mapping(bytes32 => uint256)"
+ },
+ "typeName": {
+ "id": 112,
+ "keyType": {
+ "id": 110,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "1391:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "Mapping",
+ "src": "1383:27:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
+ "typeString": "mapping(bytes32 => uint256)"
+ },
+ "valueType": {
+ "id": 111,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1402:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 116,
+ "name": "dkgComplaints",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "1474:28:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage",
+ "typeString": "bytes[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 114,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "1474:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "id": 115,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "1474:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
+ "typeString": "bytes[]"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 120,
+ "name": "dkgComplaintsProposed",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "1542:53:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
+ "typeString": "mapping(bytes32 => bool)"
+ },
+ "typeName": {
+ "id": 119,
+ "keyType": {
+ "id": 117,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "1550:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "Mapping",
+ "src": "1542:24:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
+ "typeString": "mapping(bytes32 => bool)"
+ },
+ "valueType": {
+ "id": 118,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "1561:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 124,
+ "name": "dkgMPKReadys",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "1626:44:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
+ "typeString": "mapping(address => bool)"
+ },
+ "typeName": {
+ "id": 123,
+ "keyType": {
+ "id": 121,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "1634:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Mapping",
+ "src": "1626:24:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
+ "typeString": "mapping(address => bool)"
+ },
+ "valueType": {
+ "id": 122,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "1645:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 126,
+ "name": "dkgMPKReadysCount",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "1706:32:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 125,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1706:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 130,
+ "name": "dkgFinalizeds",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "1770:45:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
+ "typeString": "mapping(address => bool)"
+ },
+ "typeName": {
+ "id": 129,
+ "keyType": {
+ "id": 127,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "1778:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Mapping",
+ "src": "1770:24:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
+ "typeString": "mapping(address => bool)"
+ },
+ "valueType": {
+ "id": 128,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "1789:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 132,
+ "name": "dkgFinalizedsCount",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "1852:33:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 131,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1852:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 136,
+ "name": "dkgSuccesses",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "1916:44:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
+ "typeString": "mapping(address => bool)"
+ },
+ "typeName": {
+ "id": 135,
+ "keyType": {
+ "id": 133,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "1924:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Mapping",
+ "src": "1916:24:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
+ "typeString": "mapping(address => bool)"
+ },
+ "valueType": {
+ "id": 134,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "1935:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 138,
+ "name": "dkgSuccessesCount",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "1996:32:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 137,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1996:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 140,
+ "name": "owner",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "2061:20:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 139,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "2061:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 142,
+ "name": "minStake",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "2108:23:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 141,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "2108:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 144,
+ "name": "lockupPeriod",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "2162:27:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 143,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "2162:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 146,
+ "name": "miningVelocity",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "2223:29:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 145,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "2223:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 148,
+ "name": "nextHalvingSupply",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "2325:32:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 147,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "2325:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 150,
+ "name": "lastHalvedAmount",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "2393:31:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 149,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "2393:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 152,
+ "name": "minGasPrice",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "2457:26:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 151,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "2457:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 154,
+ "name": "blockGasLimit",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "2516:28:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 153,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "2516:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 156,
+ "name": "lambdaBA",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "2589:23:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 155,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "2589:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 158,
+ "name": "lambdaDKG",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "2634:24:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 157,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "2634:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 160,
+ "name": "notarySetSize",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "2712:28:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 159,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "2712:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 162,
+ "name": "notaryParamAlpha",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "2787:31:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 161,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "2787:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 164,
+ "name": "notaryParamBeta",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "2902:30:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 163,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "2902:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 166,
+ "name": "roundLength",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "3000:26:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 165,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "3000:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 168,
+ "name": "minBlockInterval",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "3062:31:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 167,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "3062:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 171,
+ "name": "fineValues",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "3123:27:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
+ "typeString": "uint256[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 169,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "3123:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 170,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "3123:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
+ "typeString": "uint256[]"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 175,
+ "name": "finedRecords",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "3183:44:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
+ "typeString": "mapping(bytes32 => bool)"
+ },
+ "typeName": {
+ "id": 174,
+ "keyType": {
+ "id": 172,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "3191:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "Mapping",
+ "src": "3183:24:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
+ "typeString": "mapping(bytes32 => bool)"
+ },
+ "valueType": {
+ "id": 173,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "3202:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 185,
+ "nodeType": "Block",
+ "src": "3309:56:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 181,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 178,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "3327:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 179,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "3327:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 180,
+ "name": "owner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 140,
+ "src": "3341:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "3327:19:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ ],
+ "id": 177,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 1534,
+ 1535
+ ],
+ "referencedDeclaration": 1534,
+ "src": "3319:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
+ "typeString": "function (bool) pure"
+ }
+ },
+ "id": 182,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3319:28:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 183,
+ "nodeType": "ExpressionStatement",
+ "src": "3319:28:1"
+ },
+ {
+ "id": 184,
+ "nodeType": "PlaceholderStatement",
+ "src": "3357:1:1"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 186,
+ "name": "onlyOwner",
+ "nodeType": "ModifierDefinition",
+ "parameters": {
+ "id": 176,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "3306:2:1"
+ },
+ "src": "3288:77:1",
+ "visibility": "internal"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 188,
+ "name": "ConfigurationChanged",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 187,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "3442:2:1"
+ },
+ "src": "3416:29:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 194,
+ "name": "CRSProposed",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 193,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 190,
+ "indexed": true,
+ "name": "Round",
+ "nodeType": "VariableDeclaration",
+ "scope": 194,
+ "src": "3468:21:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 189,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "3468:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 192,
+ "indexed": false,
+ "name": "CRS",
+ "nodeType": "VariableDeclaration",
+ "scope": 194,
+ "src": "3491:11:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 191,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "3491:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "3467:36:1"
+ },
+ "src": "3450:54:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 200,
+ "name": "NodeOwnershipTransfered",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 199,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 196,
+ "indexed": true,
+ "name": "NodeAddress",
+ "nodeType": "VariableDeclaration",
+ "scope": 200,
+ "src": "3539:27:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 195,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "3539:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 198,
+ "indexed": true,
+ "name": "NewOwnerAddress",
+ "nodeType": "VariableDeclaration",
+ "scope": 200,
+ "src": "3568:31:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 197,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "3568:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "3538:62:1"
+ },
+ "src": "3509:92:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 206,
+ "name": "NodePublicKeyReplaced",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 205,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 202,
+ "indexed": true,
+ "name": "NodeAddress",
+ "nodeType": "VariableDeclaration",
+ "scope": 206,
+ "src": "3634:27:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 201,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "3634:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 204,
+ "indexed": false,
+ "name": "PublicKey",
+ "nodeType": "VariableDeclaration",
+ "scope": 206,
+ "src": "3663:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 203,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "3663:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "3633:46:1"
+ },
+ "src": "3606:74:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 212,
+ "name": "Staked",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 211,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 208,
+ "indexed": true,
+ "name": "NodeAddress",
+ "nodeType": "VariableDeclaration",
+ "scope": 212,
+ "src": "3698:27:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 207,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "3698:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 210,
+ "indexed": false,
+ "name": "Amount",
+ "nodeType": "VariableDeclaration",
+ "scope": 212,
+ "src": "3727:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 209,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "3727:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "3697:45:1"
+ },
+ "src": "3685:58:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 218,
+ "name": "Unstaked",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 217,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 214,
+ "indexed": true,
+ "name": "NodeAddress",
+ "nodeType": "VariableDeclaration",
+ "scope": 218,
+ "src": "3763:27:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 213,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "3763:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 216,
+ "indexed": false,
+ "name": "Amount",
+ "nodeType": "VariableDeclaration",
+ "scope": 218,
+ "src": "3792:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 215,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "3792:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "3762:45:1"
+ },
+ "src": "3748:60:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 224,
+ "name": "Withdrawn",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 223,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 220,
+ "indexed": true,
+ "name": "NodeAddress",
+ "nodeType": "VariableDeclaration",
+ "scope": 224,
+ "src": "3829:27:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 219,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "3829:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 222,
+ "indexed": false,
+ "name": "Amount",
+ "nodeType": "VariableDeclaration",
+ "scope": 224,
+ "src": "3858:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 221,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "3858:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "3828:45:1"
+ },
+ "src": "3813:61:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 228,
+ "name": "NodeAdded",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 227,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 226,
+ "indexed": true,
+ "name": "NodeAddress",
+ "nodeType": "VariableDeclaration",
+ "scope": 228,
+ "src": "3895:27:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 225,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "3895:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "3894:29:1"
+ },
+ "src": "3879:45:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 232,
+ "name": "NodeRemoved",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 231,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 230,
+ "indexed": true,
+ "name": "NodeAddress",
+ "nodeType": "VariableDeclaration",
+ "scope": 232,
+ "src": "3947:27:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 229,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "3947:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "3946:29:1"
+ },
+ "src": "3929:47:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 242,
+ "name": "Reported",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 241,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 234,
+ "indexed": true,
+ "name": "NodeAddress",
+ "nodeType": "VariableDeclaration",
+ "scope": 242,
+ "src": "3996:27:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 233,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "3996:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 236,
+ "indexed": false,
+ "name": "Type",
+ "nodeType": "VariableDeclaration",
+ "scope": 242,
+ "src": "4025:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 235,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "4025:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 238,
+ "indexed": false,
+ "name": "Arg1",
+ "nodeType": "VariableDeclaration",
+ "scope": 242,
+ "src": "4039:10:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 237,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "4039:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 240,
+ "indexed": false,
+ "name": "Arg2",
+ "nodeType": "VariableDeclaration",
+ "scope": 242,
+ "src": "4051:10:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 239,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "4051:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "3995:67:1"
+ },
+ "src": "3981:82:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 248,
+ "name": "Fined",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 247,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 244,
+ "indexed": true,
+ "name": "NodeAddress",
+ "nodeType": "VariableDeclaration",
+ "scope": 248,
+ "src": "4080:27:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 243,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "4080:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 246,
+ "indexed": false,
+ "name": "Amount",
+ "nodeType": "VariableDeclaration",
+ "scope": 248,
+ "src": "4109:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 245,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "4109:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4079:45:1"
+ },
+ "src": "4068:57:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 254,
+ "name": "FinePaid",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 253,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 250,
+ "indexed": true,
+ "name": "NodeAddress",
+ "nodeType": "VariableDeclaration",
+ "scope": 254,
+ "src": "4145:27:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 249,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "4145:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 252,
+ "indexed": false,
+ "name": "Amount",
+ "nodeType": "VariableDeclaration",
+ "scope": 254,
+ "src": "4174:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 251,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "4174:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4144:45:1"
+ },
+ "src": "4130:60:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 260,
+ "name": "DKGReset",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 259,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 256,
+ "indexed": true,
+ "name": "Round",
+ "nodeType": "VariableDeclaration",
+ "scope": 260,
+ "src": "4210:21:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 255,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "4210:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 258,
+ "indexed": false,
+ "name": "BlockHeight",
+ "nodeType": "VariableDeclaration",
+ "scope": 260,
+ "src": "4233:19:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 257,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "4233:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4209:44:1"
+ },
+ "src": "4195:59:1"
+ },
+ {
+ "body": {
+ "id": 267,
+ "nodeType": "Block",
+ "src": "4409:7:1",
+ "statements": []
+ },
+ "documentation": null,
+ "id": 268,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 265,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 264,
+ "name": "onlyOwner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 186,
+ "src": "4399:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "4399:9:1"
+ }
+ ],
+ "name": "transferOwnership",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 263,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 262,
+ "name": "NewOwner",
+ "nodeType": "VariableDeclaration",
+ "scope": 268,
+ "src": "4374:16:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 261,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "4374:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4373:18:1"
+ },
+ "returnParameters": {
+ "id": 266,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "4409:0:1"
+ },
+ "scope": 430,
+ "src": "4347:69:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 296,
+ "nodeType": "Block",
+ "src": "4845:7:1",
+ "statements": []
+ },
+ "documentation": null,
+ "id": 297,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 294,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 293,
+ "name": "onlyOwner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 186,
+ "src": "4835:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "4835:9:1"
+ }
+ ],
+ "name": "updateConfiguration",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 292,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 270,
+ "name": "MinStake",
+ "nodeType": "VariableDeclaration",
+ "scope": 297,
+ "src": "4492:16:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 269,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "4492:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 272,
+ "name": "LockupPeriod",
+ "nodeType": "VariableDeclaration",
+ "scope": 297,
+ "src": "4518:20:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 271,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "4518:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 274,
+ "name": "MinGasPrice",
+ "nodeType": "VariableDeclaration",
+ "scope": 297,
+ "src": "4548:19:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 273,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "4548:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 276,
+ "name": "BlockGasLimit",
+ "nodeType": "VariableDeclaration",
+ "scope": 297,
+ "src": "4577:21:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 275,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "4577:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 278,
+ "name": "LambdaBA",
+ "nodeType": "VariableDeclaration",
+ "scope": 297,
+ "src": "4608:16:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 277,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "4608:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 280,
+ "name": "LambdaDKG",
+ "nodeType": "VariableDeclaration",
+ "scope": 297,
+ "src": "4634:17:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 279,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "4634:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 282,
+ "name": "NotaryParamAlpha",
+ "nodeType": "VariableDeclaration",
+ "scope": 297,
+ "src": "4661:24:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 281,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "4661:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 284,
+ "name": "NotaryParamBeta",
+ "nodeType": "VariableDeclaration",
+ "scope": 297,
+ "src": "4695:23:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 283,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "4695:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 286,
+ "name": "RoundLength",
+ "nodeType": "VariableDeclaration",
+ "scope": 297,
+ "src": "4728:19:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 285,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "4728:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 288,
+ "name": "MinBlockInterval",
+ "nodeType": "VariableDeclaration",
+ "scope": 297,
+ "src": "4757:24:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 287,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "4757:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 291,
+ "name": "FineValues",
+ "nodeType": "VariableDeclaration",
+ "scope": 297,
+ "src": "4791:27:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
+ "typeString": "uint256[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 289,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "4791:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 290,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "4791:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
+ "typeString": "uint256[]"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4482:337:1"
+ },
+ "returnParameters": {
+ "id": 295,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "4845:0:1"
+ },
+ "scope": 430,
+ "src": "4454:398:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 302,
+ "nodeType": "Block",
+ "src": "4948:7:1",
+ "statements": []
+ },
+ "documentation": null,
+ "id": 303,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "addDKGComplaint",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 300,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 299,
+ "name": "Complaint",
+ "nodeType": "VariableDeclaration",
+ "scope": 303,
+ "src": "4917:22:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 298,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "4917:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4916:24:1"
+ },
+ "returnParameters": {
+ "id": 301,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "4948:0:1"
+ },
+ "scope": 430,
+ "src": "4892:63:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 308,
+ "nodeType": "Block",
+ "src": "5057:7:1",
+ "statements": []
+ },
+ "documentation": null,
+ "id": 309,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "addDKGMasterPublicKey",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 306,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 305,
+ "name": "PublicKey",
+ "nodeType": "VariableDeclaration",
+ "scope": 309,
+ "src": "5026:22:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 304,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "5026:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "5025:24:1"
+ },
+ "returnParameters": {
+ "id": 307,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "5057:0:1"
+ },
+ "scope": 430,
+ "src": "4995:69:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 314,
+ "nodeType": "Block",
+ "src": "5153:7:1",
+ "statements": []
+ },
+ "documentation": null,
+ "id": 315,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "addDKGMPKReady",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 312,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 311,
+ "name": "MPKReady",
+ "nodeType": "VariableDeclaration",
+ "scope": 315,
+ "src": "5123:21:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 310,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "5123:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "5122:23:1"
+ },
+ "returnParameters": {
+ "id": 313,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "5153:0:1"
+ },
+ "scope": 430,
+ "src": "5099:61:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 320,
+ "nodeType": "Block",
+ "src": "5252:7:1",
+ "statements": []
+ },
+ "documentation": null,
+ "id": 321,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "addDKGFinalize",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 318,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 317,
+ "name": "Finalize",
+ "nodeType": "VariableDeclaration",
+ "scope": 321,
+ "src": "5222:21:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 316,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "5222:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "5221:23:1"
+ },
+ "returnParameters": {
+ "id": 319,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "5252:0:1"
+ },
+ "scope": 430,
+ "src": "5198:61:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 326,
+ "nodeType": "Block",
+ "src": "5347:7:1",
+ "statements": []
+ },
+ "documentation": null,
+ "id": 327,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "addDKGSuccess",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 324,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 323,
+ "name": "Success",
+ "nodeType": "VariableDeclaration",
+ "scope": 327,
+ "src": "5318:20:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 322,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "5318:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "5317:22:1"
+ },
+ "returnParameters": {
+ "id": 325,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "5347:0:1"
+ },
+ "scope": 430,
+ "src": "5295:59:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 332,
+ "nodeType": "Block",
+ "src": "5434:7:1",
+ "statements": []
+ },
+ "documentation": null,
+ "id": 333,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "payFine",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 330,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 329,
+ "name": "NodeAddress",
+ "nodeType": "VariableDeclaration",
+ "scope": 333,
+ "src": "5398:19:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 328,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "5398:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "5397:21:1"
+ },
+ "returnParameters": {
+ "id": 331,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "5434:0:1"
+ },
+ "scope": 430,
+ "src": "5381:60:1",
+ "stateMutability": "payable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 338,
+ "nodeType": "Block",
+ "src": "5531:7:1",
+ "statements": []
+ },
+ "documentation": null,
+ "id": 339,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "nodesLength",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 334,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "5498:2:1"
+ },
+ "returnParameters": {
+ "id": 337,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 336,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 339,
+ "src": "5522:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 335,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "5522:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "5521:9:1"
+ },
+ "scope": 430,
+ "src": "5478:60:1",
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 346,
+ "nodeType": "Block",
+ "src": "5646:7:1",
+ "statements": []
+ },
+ "documentation": null,
+ "id": 347,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "proposeCRS",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 344,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 341,
+ "name": "Round",
+ "nodeType": "VariableDeclaration",
+ "scope": 347,
+ "src": "5600:13:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 340,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "5600:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 343,
+ "name": "SignedCRS",
+ "nodeType": "VariableDeclaration",
+ "scope": 347,
+ "src": "5615:22:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 342,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "5615:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "5599:39:1"
+ },
+ "returnParameters": {
+ "id": 345,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "5646:0:1"
+ },
+ "scope": 430,
+ "src": "5580:73:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 356,
+ "nodeType": "Block",
+ "src": "5777:7:1",
+ "statements": []
+ },
+ "documentation": null,
+ "id": 357,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "report",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 354,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 349,
+ "name": "Type",
+ "nodeType": "VariableDeclaration",
+ "scope": 357,
+ "src": "5718:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 348,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "5718:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 351,
+ "name": "Arg1",
+ "nodeType": "VariableDeclaration",
+ "scope": 357,
+ "src": "5732:17:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 350,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "5732:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 353,
+ "name": "Arg2",
+ "nodeType": "VariableDeclaration",
+ "scope": 357,
+ "src": "5751:17:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 352,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "5751:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "5717:52:1"
+ },
+ "returnParameters": {
+ "id": 355,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "5777:0:1"
+ },
+ "scope": 430,
+ "src": "5702:82:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 362,
+ "nodeType": "Block",
+ "src": "5872:7:1",
+ "statements": []
+ },
+ "documentation": null,
+ "id": 363,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "resetDKG",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 360,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 359,
+ "name": "NewSignedCRS",
+ "nodeType": "VariableDeclaration",
+ "scope": 363,
+ "src": "5838:25:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 358,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "5838:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "5837:27:1"
+ },
+ "returnParameters": {
+ "id": 361,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "5872:0:1"
+ },
+ "scope": 430,
+ "src": "5820:59:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 376,
+ "nodeType": "Block",
+ "src": "6224:7:1",
+ "statements": []
+ },
+ "documentation": null,
+ "id": 377,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "register",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 374,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 365,
+ "name": "PublicKey",
+ "nodeType": "VariableDeclaration",
+ "scope": 377,
+ "src": "6057:22:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 364,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "6057:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 367,
+ "name": "Name",
+ "nodeType": "VariableDeclaration",
+ "scope": 377,
+ "src": "6081:18:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 366,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "6081:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 369,
+ "name": "Email",
+ "nodeType": "VariableDeclaration",
+ "scope": 377,
+ "src": "6123:19:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 368,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "6123:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 371,
+ "name": "Location",
+ "nodeType": "VariableDeclaration",
+ "scope": 377,
+ "src": "6144:22:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 370,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "6144:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 373,
+ "name": "Url",
+ "nodeType": "VariableDeclaration",
+ "scope": 377,
+ "src": "6190:17:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 372,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "6190:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "6056:152:1"
+ },
+ "returnParameters": {
+ "id": 375,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "6224:0:1"
+ },
+ "scope": 430,
+ "src": "6039:192:1",
+ "stateMutability": "payable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 382,
+ "nodeType": "Block",
+ "src": "6343:7:1",
+ "statements": []
+ },
+ "documentation": null,
+ "id": 383,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "replaceNodePublicKey",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 380,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 379,
+ "name": "NewPublicKey",
+ "nodeType": "VariableDeclaration",
+ "scope": 383,
+ "src": "6309:25:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 378,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "6309:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "6308:27:1"
+ },
+ "returnParameters": {
+ "id": 381,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "6343:0:1"
+ },
+ "scope": 430,
+ "src": "6279:71:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 386,
+ "nodeType": "Block",
+ "src": "6403:7:1",
+ "statements": []
+ },
+ "documentation": null,
+ "id": 387,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "stake",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 384,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "6385:2:1"
+ },
+ "returnParameters": {
+ "id": 385,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "6403:0:1"
+ },
+ "scope": 430,
+ "src": "6371:39:1",
+ "stateMutability": "payable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 392,
+ "nodeType": "Block",
+ "src": "6511:7:1",
+ "statements": []
+ },
+ "documentation": null,
+ "id": 393,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "transferNodeOwnership",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 390,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 389,
+ "name": "NewOwner",
+ "nodeType": "VariableDeclaration",
+ "scope": 393,
+ "src": "6486:16:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 388,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "6486:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "6485:18:1"
+ },
+ "returnParameters": {
+ "id": 391,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "6511:0:1"
+ },
+ "scope": 430,
+ "src": "6455:63:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 400,
+ "nodeType": "Block",
+ "src": "6671:7:1",
+ "statements": []
+ },
+ "documentation": null,
+ "id": 401,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "transferNodeOwnershipByFoundation",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 398,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 395,
+ "name": "OldOwner",
+ "nodeType": "VariableDeclaration",
+ "scope": 401,
+ "src": "6628:16:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 394,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "6628:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 397,
+ "name": "NewOwner",
+ "nodeType": "VariableDeclaration",
+ "scope": 401,
+ "src": "6646:16:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 396,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "6646:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "6627:36:1"
+ },
+ "returnParameters": {
+ "id": 399,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "6671:0:1"
+ },
+ "scope": 430,
+ "src": "6585:93:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 406,
+ "nodeType": "Block",
+ "src": "6741:7:1",
+ "statements": []
+ },
+ "documentation": null,
+ "id": 407,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "unstake",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 404,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 403,
+ "name": "Amount",
+ "nodeType": "VariableDeclaration",
+ "scope": 407,
+ "src": "6718:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 402,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "6718:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "6717:16:1"
+ },
+ "returnParameters": {
+ "id": 405,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "6741:0:1"
+ },
+ "scope": 430,
+ "src": "6701:47:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 418,
+ "nodeType": "Block",
+ "src": "6947:7:1",
+ "statements": []
+ },
+ "documentation": null,
+ "id": 419,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "updateNodeInfo",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 416,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 409,
+ "name": "Name",
+ "nodeType": "VariableDeclaration",
+ "scope": 419,
+ "src": "6828:18:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 408,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "6828:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 411,
+ "name": "Email",
+ "nodeType": "VariableDeclaration",
+ "scope": 419,
+ "src": "6848:19:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 410,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "6848:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 413,
+ "name": "Location",
+ "nodeType": "VariableDeclaration",
+ "scope": 419,
+ "src": "6897:22:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 412,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "6897:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 415,
+ "name": "Url",
+ "nodeType": "VariableDeclaration",
+ "scope": 419,
+ "src": "6921:17:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 414,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "6921:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "6827:112:1"
+ },
+ "returnParameters": {
+ "id": 417,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "6947:0:1"
+ },
+ "scope": 430,
+ "src": "6804:150:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 422,
+ "nodeType": "Block",
+ "src": "7005:7:1",
+ "statements": []
+ },
+ "documentation": null,
+ "id": 423,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "withdraw",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 420,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "6995:2:1"
+ },
+ "returnParameters": {
+ "id": 421,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "7005:0:1"
+ },
+ "scope": 430,
+ "src": "6978:34:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 428,
+ "nodeType": "Block",
+ "src": "7091:7:1",
+ "statements": []
+ },
+ "documentation": null,
+ "id": 429,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "withdrawable",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 424,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "7061:2:1"
+ },
+ "returnParameters": {
+ "id": 427,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 426,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 429,
+ "src": "7085:4:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 425,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "7085:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "7084:6:1"
+ },
+ "scope": 430,
+ "src": "7040:58:1",
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "public"
+ }
+ ],
+ "scope": 431,
+ "src": "26:7074:1"
+ }
+ ],
+ "src": "0:7101:1"
+ },
+ "legacyAST": {
+ "absolutePath": "/Users/aitjcize/Work/tangerine-network/node-staker/contracts/Governance.sol",
+ "exportedSymbols": {
+ "Governance": [
+ 430
+ ]
+ },
+ "id": 431,
+ "nodeType": "SourceUnit",
+ "nodes": [
+ {
+ "id": 48,
+ "literals": [
+ "solidity",
+ "^",
+ "0.5",
+ ".11"
+ ],
+ "nodeType": "PragmaDirective",
+ "src": "0:24:1"
+ },
+ {
+ "baseContracts": [],
+ "contractDependencies": [],
+ "contractKind": "contract",
+ "documentation": null,
+ "fullyImplemented": true,
+ "id": 430,
+ "linearizedBaseContracts": [
+ 430
+ ],
+ "name": "Governance",
+ "nodeType": "ContractDefinition",
+ "nodes": [
+ {
+ "canonicalName": "Governance.Node",
+ "id": 69,
+ "members": [
+ {
+ "constant": false,
+ "id": 50,
+ "name": "owner",
+ "nodeType": "VariableDeclaration",
+ "scope": 69,
+ "src": "88:13:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 49,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "88:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 52,
+ "name": "publicKey",
+ "nodeType": "VariableDeclaration",
+ "scope": 69,
+ "src": "111:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 51,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "111:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 54,
+ "name": "staked",
+ "nodeType": "VariableDeclaration",
+ "scope": 69,
+ "src": "136:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 53,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "136:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 56,
+ "name": "fined",
+ "nodeType": "VariableDeclaration",
+ "scope": 69,
+ "src": "160:13:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 55,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "160:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 58,
+ "name": "name",
+ "nodeType": "VariableDeclaration",
+ "scope": 69,
+ "src": "183:11:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 57,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "183:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 60,
+ "name": "email",
+ "nodeType": "VariableDeclaration",
+ "scope": 69,
+ "src": "204:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 59,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "204:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 62,
+ "name": "location",
+ "nodeType": "VariableDeclaration",
+ "scope": 69,
+ "src": "226:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 61,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "226:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 64,
+ "name": "url",
+ "nodeType": "VariableDeclaration",
+ "scope": 69,
+ "src": "251:10:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 63,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "251:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 66,
+ "name": "unstaked",
+ "nodeType": "VariableDeclaration",
+ "scope": 69,
+ "src": "271:16:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 65,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "271:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 68,
+ "name": "unstakedAt",
+ "nodeType": "VariableDeclaration",
+ "scope": 69,
+ "src": "297:18:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 67,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "297:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "name": "Node",
+ "nodeType": "StructDefinition",
+ "scope": 430,
+ "src": "66:256:1",
+ "visibility": "public"
+ },
+ {
+ "canonicalName": "Governance.ReportType",
+ "id": 75,
+ "members": [
+ {
+ "id": 70,
+ "name": "FAIL_STOP",
+ "nodeType": "EnumValue",
+ "src": "373:9:1"
+ },
+ {
+ "id": 71,
+ "name": "FAIL_STOP_DKG",
+ "nodeType": "EnumValue",
+ "src": "392:13:1"
+ },
+ {
+ "id": 72,
+ "name": "INVALID_DKG",
+ "nodeType": "EnumValue",
+ "src": "415:11:1"
+ },
+ {
+ "id": 73,
+ "name": "FORK_VOTE",
+ "nodeType": "EnumValue",
+ "src": "436:9:1"
+ },
+ {
+ "id": 74,
+ "name": "FORK_BLOCK",
+ "nodeType": "EnumValue",
+ "src": "455:10:1"
+ }
+ ],
+ "name": "ReportType",
+ "nodeType": "EnumDefinition",
+ "src": "347:124:1"
+ },
+ {
+ "constant": false,
+ "id": 78,
+ "name": "roundHeight",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "517:28:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
+ "typeString": "uint256[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 76,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "517:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 77,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "517:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
+ "typeString": "uint256[]"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 80,
+ "name": "totalSupply",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "574:26:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 79,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "574:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 82,
+ "name": "totalStaked",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "630:26:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 81,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "630:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 85,
+ "name": "nodes",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "680:19:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_Node_$69_storage_$dyn_storage",
+ "typeString": "struct Governance.Node[]"
+ },
+ "typeName": {
+ "baseType": {
+ "contractScope": null,
+ "id": 83,
+ "name": "Node",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 69,
+ "src": "680:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$69_storage_ptr",
+ "typeString": "struct Governance.Node"
+ }
+ },
+ "id": 84,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "680:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_Node_$69_storage_$dyn_storage_ptr",
+ "typeString": "struct Governance.Node[]"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 89,
+ "name": "nodesOffsetByAddress",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "764:54:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
+ "typeString": "mapping(address => int256)"
+ },
+ "typeName": {
+ "id": 88,
+ "keyType": {
+ "id": 86,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "772:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Mapping",
+ "src": "764:26:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
+ "typeString": "mapping(address => int256)"
+ },
+ "valueType": {
+ "id": 87,
+ "name": "int256",
+ "nodeType": "ElementaryTypeName",
+ "src": "783:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_int256",
+ "typeString": "int256"
+ }
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 93,
+ "name": "nodesOffsetByNodeKeyAddress",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "907:61:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
+ "typeString": "mapping(address => int256)"
+ },
+ "typeName": {
+ "id": 92,
+ "keyType": {
+ "id": 90,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "915:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Mapping",
+ "src": "907:26:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
+ "typeString": "mapping(address => int256)"
+ },
+ "valueType": {
+ "id": 91,
+ "name": "int256",
+ "nodeType": "ElementaryTypeName",
+ "src": "926:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_int256",
+ "typeString": "int256"
+ }
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 97,
+ "name": "lastProposedHeight",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "1012:53:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ },
+ "typeName": {
+ "id": 96,
+ "keyType": {
+ "id": 94,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "1020:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Mapping",
+ "src": "1012:27:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ },
+ "valueType": {
+ "id": 95,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1031:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 99,
+ "name": "crsRound",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "1092:23:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 98,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1092:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 101,
+ "name": "crs",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "1137:18:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 100,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "1137:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 103,
+ "name": "dkgRound",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "1182:23:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 102,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1182:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 106,
+ "name": "dkgResetCount",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "1238:30:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
+ "typeString": "uint256[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 104,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1238:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 105,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "1238:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
+ "typeString": "uint256[]"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 109,
+ "name": "dkgMasterPublicKeys",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "1306:34:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage",
+ "typeString": "bytes[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 107,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "1306:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "id": 108,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "1306:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
+ "typeString": "bytes[]"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 113,
+ "name": "dkgMasterPublicKeyOffset",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "1383:59:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
+ "typeString": "mapping(bytes32 => uint256)"
+ },
+ "typeName": {
+ "id": 112,
+ "keyType": {
+ "id": 110,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "1391:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "Mapping",
+ "src": "1383:27:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
+ "typeString": "mapping(bytes32 => uint256)"
+ },
+ "valueType": {
+ "id": 111,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1402:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 116,
+ "name": "dkgComplaints",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "1474:28:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage",
+ "typeString": "bytes[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 114,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "1474:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "id": 115,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "1474:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
+ "typeString": "bytes[]"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 120,
+ "name": "dkgComplaintsProposed",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "1542:53:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
+ "typeString": "mapping(bytes32 => bool)"
+ },
+ "typeName": {
+ "id": 119,
+ "keyType": {
+ "id": 117,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "1550:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "Mapping",
+ "src": "1542:24:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
+ "typeString": "mapping(bytes32 => bool)"
+ },
+ "valueType": {
+ "id": 118,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "1561:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 124,
+ "name": "dkgMPKReadys",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "1626:44:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
+ "typeString": "mapping(address => bool)"
+ },
+ "typeName": {
+ "id": 123,
+ "keyType": {
+ "id": 121,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "1634:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Mapping",
+ "src": "1626:24:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
+ "typeString": "mapping(address => bool)"
+ },
+ "valueType": {
+ "id": 122,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "1645:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 126,
+ "name": "dkgMPKReadysCount",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "1706:32:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 125,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1706:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 130,
+ "name": "dkgFinalizeds",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "1770:45:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
+ "typeString": "mapping(address => bool)"
+ },
+ "typeName": {
+ "id": 129,
+ "keyType": {
+ "id": 127,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "1778:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Mapping",
+ "src": "1770:24:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
+ "typeString": "mapping(address => bool)"
+ },
+ "valueType": {
+ "id": 128,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "1789:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 132,
+ "name": "dkgFinalizedsCount",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "1852:33:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 131,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1852:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 136,
+ "name": "dkgSuccesses",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "1916:44:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
+ "typeString": "mapping(address => bool)"
+ },
+ "typeName": {
+ "id": 135,
+ "keyType": {
+ "id": 133,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "1924:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Mapping",
+ "src": "1916:24:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
+ "typeString": "mapping(address => bool)"
+ },
+ "valueType": {
+ "id": 134,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "1935:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 138,
+ "name": "dkgSuccessesCount",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "1996:32:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 137,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1996:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 140,
+ "name": "owner",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "2061:20:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 139,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "2061:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 142,
+ "name": "minStake",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "2108:23:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 141,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "2108:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 144,
+ "name": "lockupPeriod",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "2162:27:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 143,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "2162:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 146,
+ "name": "miningVelocity",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "2223:29:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 145,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "2223:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 148,
+ "name": "nextHalvingSupply",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "2325:32:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 147,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "2325:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 150,
+ "name": "lastHalvedAmount",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "2393:31:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 149,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "2393:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 152,
+ "name": "minGasPrice",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "2457:26:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 151,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "2457:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 154,
+ "name": "blockGasLimit",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "2516:28:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 153,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "2516:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 156,
+ "name": "lambdaBA",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "2589:23:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 155,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "2589:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 158,
+ "name": "lambdaDKG",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "2634:24:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 157,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "2634:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 160,
+ "name": "notarySetSize",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "2712:28:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 159,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "2712:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 162,
+ "name": "notaryParamAlpha",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "2787:31:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 161,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "2787:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 164,
+ "name": "notaryParamBeta",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "2902:30:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 163,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "2902:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 166,
+ "name": "roundLength",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "3000:26:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 165,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "3000:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 168,
+ "name": "minBlockInterval",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "3062:31:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 167,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "3062:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 171,
+ "name": "fineValues",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "3123:27:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
+ "typeString": "uint256[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 169,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "3123:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 170,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "3123:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
+ "typeString": "uint256[]"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 175,
+ "name": "finedRecords",
+ "nodeType": "VariableDeclaration",
+ "scope": 430,
+ "src": "3183:44:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
+ "typeString": "mapping(bytes32 => bool)"
+ },
+ "typeName": {
+ "id": 174,
+ "keyType": {
+ "id": 172,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "3191:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "Mapping",
+ "src": "3183:24:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
+ "typeString": "mapping(bytes32 => bool)"
+ },
+ "valueType": {
+ "id": 173,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "3202:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 185,
+ "nodeType": "Block",
+ "src": "3309:56:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 181,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 178,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "3327:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 179,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "3327:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 180,
+ "name": "owner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 140,
+ "src": "3341:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "3327:19:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ ],
+ "id": 177,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 1534,
+ 1535
+ ],
+ "referencedDeclaration": 1534,
+ "src": "3319:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
+ "typeString": "function (bool) pure"
+ }
+ },
+ "id": 182,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3319:28:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 183,
+ "nodeType": "ExpressionStatement",
+ "src": "3319:28:1"
+ },
+ {
+ "id": 184,
+ "nodeType": "PlaceholderStatement",
+ "src": "3357:1:1"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 186,
+ "name": "onlyOwner",
+ "nodeType": "ModifierDefinition",
+ "parameters": {
+ "id": 176,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "3306:2:1"
+ },
+ "src": "3288:77:1",
+ "visibility": "internal"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 188,
+ "name": "ConfigurationChanged",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 187,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "3442:2:1"
+ },
+ "src": "3416:29:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 194,
+ "name": "CRSProposed",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 193,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 190,
+ "indexed": true,
+ "name": "Round",
+ "nodeType": "VariableDeclaration",
+ "scope": 194,
+ "src": "3468:21:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 189,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "3468:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 192,
+ "indexed": false,
+ "name": "CRS",
+ "nodeType": "VariableDeclaration",
+ "scope": 194,
+ "src": "3491:11:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 191,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "3491:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "3467:36:1"
+ },
+ "src": "3450:54:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 200,
+ "name": "NodeOwnershipTransfered",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 199,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 196,
+ "indexed": true,
+ "name": "NodeAddress",
+ "nodeType": "VariableDeclaration",
+ "scope": 200,
+ "src": "3539:27:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 195,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "3539:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 198,
+ "indexed": true,
+ "name": "NewOwnerAddress",
+ "nodeType": "VariableDeclaration",
+ "scope": 200,
+ "src": "3568:31:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 197,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "3568:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "3538:62:1"
+ },
+ "src": "3509:92:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 206,
+ "name": "NodePublicKeyReplaced",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 205,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 202,
+ "indexed": true,
+ "name": "NodeAddress",
+ "nodeType": "VariableDeclaration",
+ "scope": 206,
+ "src": "3634:27:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 201,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "3634:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 204,
+ "indexed": false,
+ "name": "PublicKey",
+ "nodeType": "VariableDeclaration",
+ "scope": 206,
+ "src": "3663:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 203,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "3663:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "3633:46:1"
+ },
+ "src": "3606:74:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 212,
+ "name": "Staked",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 211,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 208,
+ "indexed": true,
+ "name": "NodeAddress",
+ "nodeType": "VariableDeclaration",
+ "scope": 212,
+ "src": "3698:27:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 207,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "3698:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 210,
+ "indexed": false,
+ "name": "Amount",
+ "nodeType": "VariableDeclaration",
+ "scope": 212,
+ "src": "3727:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 209,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "3727:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "3697:45:1"
+ },
+ "src": "3685:58:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 218,
+ "name": "Unstaked",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 217,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 214,
+ "indexed": true,
+ "name": "NodeAddress",
+ "nodeType": "VariableDeclaration",
+ "scope": 218,
+ "src": "3763:27:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 213,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "3763:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 216,
+ "indexed": false,
+ "name": "Amount",
+ "nodeType": "VariableDeclaration",
+ "scope": 218,
+ "src": "3792:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 215,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "3792:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "3762:45:1"
+ },
+ "src": "3748:60:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 224,
+ "name": "Withdrawn",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 223,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 220,
+ "indexed": true,
+ "name": "NodeAddress",
+ "nodeType": "VariableDeclaration",
+ "scope": 224,
+ "src": "3829:27:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 219,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "3829:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 222,
+ "indexed": false,
+ "name": "Amount",
+ "nodeType": "VariableDeclaration",
+ "scope": 224,
+ "src": "3858:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 221,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "3858:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "3828:45:1"
+ },
+ "src": "3813:61:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 228,
+ "name": "NodeAdded",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 227,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 226,
+ "indexed": true,
+ "name": "NodeAddress",
+ "nodeType": "VariableDeclaration",
+ "scope": 228,
+ "src": "3895:27:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 225,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "3895:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "3894:29:1"
+ },
+ "src": "3879:45:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 232,
+ "name": "NodeRemoved",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 231,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 230,
+ "indexed": true,
+ "name": "NodeAddress",
+ "nodeType": "VariableDeclaration",
+ "scope": 232,
+ "src": "3947:27:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 229,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "3947:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "3946:29:1"
+ },
+ "src": "3929:47:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 242,
+ "name": "Reported",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 241,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 234,
+ "indexed": true,
+ "name": "NodeAddress",
+ "nodeType": "VariableDeclaration",
+ "scope": 242,
+ "src": "3996:27:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 233,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "3996:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 236,
+ "indexed": false,
+ "name": "Type",
+ "nodeType": "VariableDeclaration",
+ "scope": 242,
+ "src": "4025:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 235,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "4025:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 238,
+ "indexed": false,
+ "name": "Arg1",
+ "nodeType": "VariableDeclaration",
+ "scope": 242,
+ "src": "4039:10:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 237,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "4039:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 240,
+ "indexed": false,
+ "name": "Arg2",
+ "nodeType": "VariableDeclaration",
+ "scope": 242,
+ "src": "4051:10:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 239,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "4051:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "3995:67:1"
+ },
+ "src": "3981:82:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 248,
+ "name": "Fined",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 247,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 244,
+ "indexed": true,
+ "name": "NodeAddress",
+ "nodeType": "VariableDeclaration",
+ "scope": 248,
+ "src": "4080:27:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 243,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "4080:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 246,
+ "indexed": false,
+ "name": "Amount",
+ "nodeType": "VariableDeclaration",
+ "scope": 248,
+ "src": "4109:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 245,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "4109:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4079:45:1"
+ },
+ "src": "4068:57:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 254,
+ "name": "FinePaid",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 253,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 250,
+ "indexed": true,
+ "name": "NodeAddress",
+ "nodeType": "VariableDeclaration",
+ "scope": 254,
+ "src": "4145:27:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 249,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "4145:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 252,
+ "indexed": false,
+ "name": "Amount",
+ "nodeType": "VariableDeclaration",
+ "scope": 254,
+ "src": "4174:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 251,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "4174:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4144:45:1"
+ },
+ "src": "4130:60:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 260,
+ "name": "DKGReset",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 259,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 256,
+ "indexed": true,
+ "name": "Round",
+ "nodeType": "VariableDeclaration",
+ "scope": 260,
+ "src": "4210:21:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 255,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "4210:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 258,
+ "indexed": false,
+ "name": "BlockHeight",
+ "nodeType": "VariableDeclaration",
+ "scope": 260,
+ "src": "4233:19:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 257,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "4233:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4209:44:1"
+ },
+ "src": "4195:59:1"
+ },
+ {
+ "body": {
+ "id": 267,
+ "nodeType": "Block",
+ "src": "4409:7:1",
+ "statements": []
+ },
+ "documentation": null,
+ "id": 268,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 265,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 264,
+ "name": "onlyOwner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 186,
+ "src": "4399:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "4399:9:1"
+ }
+ ],
+ "name": "transferOwnership",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 263,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 262,
+ "name": "NewOwner",
+ "nodeType": "VariableDeclaration",
+ "scope": 268,
+ "src": "4374:16:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 261,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "4374:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4373:18:1"
+ },
+ "returnParameters": {
+ "id": 266,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "4409:0:1"
+ },
+ "scope": 430,
+ "src": "4347:69:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 296,
+ "nodeType": "Block",
+ "src": "4845:7:1",
+ "statements": []
+ },
+ "documentation": null,
+ "id": 297,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 294,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 293,
+ "name": "onlyOwner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 186,
+ "src": "4835:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "4835:9:1"
+ }
+ ],
+ "name": "updateConfiguration",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 292,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 270,
+ "name": "MinStake",
+ "nodeType": "VariableDeclaration",
+ "scope": 297,
+ "src": "4492:16:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 269,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "4492:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 272,
+ "name": "LockupPeriod",
+ "nodeType": "VariableDeclaration",
+ "scope": 297,
+ "src": "4518:20:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 271,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "4518:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 274,
+ "name": "MinGasPrice",
+ "nodeType": "VariableDeclaration",
+ "scope": 297,
+ "src": "4548:19:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 273,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "4548:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 276,
+ "name": "BlockGasLimit",
+ "nodeType": "VariableDeclaration",
+ "scope": 297,
+ "src": "4577:21:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 275,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "4577:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 278,
+ "name": "LambdaBA",
+ "nodeType": "VariableDeclaration",
+ "scope": 297,
+ "src": "4608:16:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 277,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "4608:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 280,
+ "name": "LambdaDKG",
+ "nodeType": "VariableDeclaration",
+ "scope": 297,
+ "src": "4634:17:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 279,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "4634:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 282,
+ "name": "NotaryParamAlpha",
+ "nodeType": "VariableDeclaration",
+ "scope": 297,
+ "src": "4661:24:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 281,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "4661:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 284,
+ "name": "NotaryParamBeta",
+ "nodeType": "VariableDeclaration",
+ "scope": 297,
+ "src": "4695:23:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 283,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "4695:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 286,
+ "name": "RoundLength",
+ "nodeType": "VariableDeclaration",
+ "scope": 297,
+ "src": "4728:19:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 285,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "4728:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 288,
+ "name": "MinBlockInterval",
+ "nodeType": "VariableDeclaration",
+ "scope": 297,
+ "src": "4757:24:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 287,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "4757:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 291,
+ "name": "FineValues",
+ "nodeType": "VariableDeclaration",
+ "scope": 297,
+ "src": "4791:27:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
+ "typeString": "uint256[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 289,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "4791:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 290,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "4791:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
+ "typeString": "uint256[]"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4482:337:1"
+ },
+ "returnParameters": {
+ "id": 295,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "4845:0:1"
+ },
+ "scope": 430,
+ "src": "4454:398:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 302,
+ "nodeType": "Block",
+ "src": "4948:7:1",
+ "statements": []
+ },
+ "documentation": null,
+ "id": 303,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "addDKGComplaint",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 300,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 299,
+ "name": "Complaint",
+ "nodeType": "VariableDeclaration",
+ "scope": 303,
+ "src": "4917:22:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 298,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "4917:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4916:24:1"
+ },
+ "returnParameters": {
+ "id": 301,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "4948:0:1"
+ },
+ "scope": 430,
+ "src": "4892:63:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 308,
+ "nodeType": "Block",
+ "src": "5057:7:1",
+ "statements": []
+ },
+ "documentation": null,
+ "id": 309,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "addDKGMasterPublicKey",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 306,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 305,
+ "name": "PublicKey",
+ "nodeType": "VariableDeclaration",
+ "scope": 309,
+ "src": "5026:22:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 304,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "5026:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "5025:24:1"
+ },
+ "returnParameters": {
+ "id": 307,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "5057:0:1"
+ },
+ "scope": 430,
+ "src": "4995:69:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 314,
+ "nodeType": "Block",
+ "src": "5153:7:1",
+ "statements": []
+ },
+ "documentation": null,
+ "id": 315,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "addDKGMPKReady",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 312,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 311,
+ "name": "MPKReady",
+ "nodeType": "VariableDeclaration",
+ "scope": 315,
+ "src": "5123:21:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 310,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "5123:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "5122:23:1"
+ },
+ "returnParameters": {
+ "id": 313,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "5153:0:1"
+ },
+ "scope": 430,
+ "src": "5099:61:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 320,
+ "nodeType": "Block",
+ "src": "5252:7:1",
+ "statements": []
+ },
+ "documentation": null,
+ "id": 321,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "addDKGFinalize",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 318,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 317,
+ "name": "Finalize",
+ "nodeType": "VariableDeclaration",
+ "scope": 321,
+ "src": "5222:21:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 316,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "5222:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "5221:23:1"
+ },
+ "returnParameters": {
+ "id": 319,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "5252:0:1"
+ },
+ "scope": 430,
+ "src": "5198:61:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 326,
+ "nodeType": "Block",
+ "src": "5347:7:1",
+ "statements": []
+ },
+ "documentation": null,
+ "id": 327,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "addDKGSuccess",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 324,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 323,
+ "name": "Success",
+ "nodeType": "VariableDeclaration",
+ "scope": 327,
+ "src": "5318:20:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 322,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "5318:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "5317:22:1"
+ },
+ "returnParameters": {
+ "id": 325,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "5347:0:1"
+ },
+ "scope": 430,
+ "src": "5295:59:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 332,
+ "nodeType": "Block",
+ "src": "5434:7:1",
+ "statements": []
+ },
+ "documentation": null,
+ "id": 333,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "payFine",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 330,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 329,
+ "name": "NodeAddress",
+ "nodeType": "VariableDeclaration",
+ "scope": 333,
+ "src": "5398:19:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 328,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "5398:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "5397:21:1"
+ },
+ "returnParameters": {
+ "id": 331,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "5434:0:1"
+ },
+ "scope": 430,
+ "src": "5381:60:1",
+ "stateMutability": "payable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 338,
+ "nodeType": "Block",
+ "src": "5531:7:1",
+ "statements": []
+ },
+ "documentation": null,
+ "id": 339,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "nodesLength",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 334,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "5498:2:1"
+ },
+ "returnParameters": {
+ "id": 337,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 336,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 339,
+ "src": "5522:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 335,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "5522:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "5521:9:1"
+ },
+ "scope": 430,
+ "src": "5478:60:1",
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 346,
+ "nodeType": "Block",
+ "src": "5646:7:1",
+ "statements": []
+ },
+ "documentation": null,
+ "id": 347,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "proposeCRS",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 344,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 341,
+ "name": "Round",
+ "nodeType": "VariableDeclaration",
+ "scope": 347,
+ "src": "5600:13:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 340,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "5600:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 343,
+ "name": "SignedCRS",
+ "nodeType": "VariableDeclaration",
+ "scope": 347,
+ "src": "5615:22:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 342,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "5615:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "5599:39:1"
+ },
+ "returnParameters": {
+ "id": 345,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "5646:0:1"
+ },
+ "scope": 430,
+ "src": "5580:73:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 356,
+ "nodeType": "Block",
+ "src": "5777:7:1",
+ "statements": []
+ },
+ "documentation": null,
+ "id": 357,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "report",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 354,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 349,
+ "name": "Type",
+ "nodeType": "VariableDeclaration",
+ "scope": 357,
+ "src": "5718:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 348,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "5718:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 351,
+ "name": "Arg1",
+ "nodeType": "VariableDeclaration",
+ "scope": 357,
+ "src": "5732:17:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 350,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "5732:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 353,
+ "name": "Arg2",
+ "nodeType": "VariableDeclaration",
+ "scope": 357,
+ "src": "5751:17:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 352,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "5751:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "5717:52:1"
+ },
+ "returnParameters": {
+ "id": 355,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "5777:0:1"
+ },
+ "scope": 430,
+ "src": "5702:82:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 362,
+ "nodeType": "Block",
+ "src": "5872:7:1",
+ "statements": []
+ },
+ "documentation": null,
+ "id": 363,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "resetDKG",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 360,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 359,
+ "name": "NewSignedCRS",
+ "nodeType": "VariableDeclaration",
+ "scope": 363,
+ "src": "5838:25:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 358,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "5838:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "5837:27:1"
+ },
+ "returnParameters": {
+ "id": 361,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "5872:0:1"
+ },
+ "scope": 430,
+ "src": "5820:59:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 376,
+ "nodeType": "Block",
+ "src": "6224:7:1",
+ "statements": []
+ },
+ "documentation": null,
+ "id": 377,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "register",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 374,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 365,
+ "name": "PublicKey",
+ "nodeType": "VariableDeclaration",
+ "scope": 377,
+ "src": "6057:22:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 364,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "6057:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 367,
+ "name": "Name",
+ "nodeType": "VariableDeclaration",
+ "scope": 377,
+ "src": "6081:18:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 366,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "6081:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 369,
+ "name": "Email",
+ "nodeType": "VariableDeclaration",
+ "scope": 377,
+ "src": "6123:19:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 368,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "6123:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 371,
+ "name": "Location",
+ "nodeType": "VariableDeclaration",
+ "scope": 377,
+ "src": "6144:22:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 370,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "6144:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 373,
+ "name": "Url",
+ "nodeType": "VariableDeclaration",
+ "scope": 377,
+ "src": "6190:17:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 372,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "6190:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "6056:152:1"
+ },
+ "returnParameters": {
+ "id": 375,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "6224:0:1"
+ },
+ "scope": 430,
+ "src": "6039:192:1",
+ "stateMutability": "payable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 382,
+ "nodeType": "Block",
+ "src": "6343:7:1",
+ "statements": []
+ },
+ "documentation": null,
+ "id": 383,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "replaceNodePublicKey",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 380,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 379,
+ "name": "NewPublicKey",
+ "nodeType": "VariableDeclaration",
+ "scope": 383,
+ "src": "6309:25:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 378,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "6309:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "6308:27:1"
+ },
+ "returnParameters": {
+ "id": 381,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "6343:0:1"
+ },
+ "scope": 430,
+ "src": "6279:71:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 386,
+ "nodeType": "Block",
+ "src": "6403:7:1",
+ "statements": []
+ },
+ "documentation": null,
+ "id": 387,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "stake",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 384,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "6385:2:1"
+ },
+ "returnParameters": {
+ "id": 385,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "6403:0:1"
+ },
+ "scope": 430,
+ "src": "6371:39:1",
+ "stateMutability": "payable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 392,
+ "nodeType": "Block",
+ "src": "6511:7:1",
+ "statements": []
+ },
+ "documentation": null,
+ "id": 393,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "transferNodeOwnership",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 390,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 389,
+ "name": "NewOwner",
+ "nodeType": "VariableDeclaration",
+ "scope": 393,
+ "src": "6486:16:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 388,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "6486:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "6485:18:1"
+ },
+ "returnParameters": {
+ "id": 391,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "6511:0:1"
+ },
+ "scope": 430,
+ "src": "6455:63:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 400,
+ "nodeType": "Block",
+ "src": "6671:7:1",
+ "statements": []
+ },
+ "documentation": null,
+ "id": 401,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "transferNodeOwnershipByFoundation",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 398,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 395,
+ "name": "OldOwner",
+ "nodeType": "VariableDeclaration",
+ "scope": 401,
+ "src": "6628:16:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 394,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "6628:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 397,
+ "name": "NewOwner",
+ "nodeType": "VariableDeclaration",
+ "scope": 401,
+ "src": "6646:16:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 396,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "6646:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "6627:36:1"
+ },
+ "returnParameters": {
+ "id": 399,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "6671:0:1"
+ },
+ "scope": 430,
+ "src": "6585:93:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 406,
+ "nodeType": "Block",
+ "src": "6741:7:1",
+ "statements": []
+ },
+ "documentation": null,
+ "id": 407,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "unstake",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 404,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 403,
+ "name": "Amount",
+ "nodeType": "VariableDeclaration",
+ "scope": 407,
+ "src": "6718:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 402,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "6718:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "6717:16:1"
+ },
+ "returnParameters": {
+ "id": 405,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "6741:0:1"
+ },
+ "scope": 430,
+ "src": "6701:47:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 418,
+ "nodeType": "Block",
+ "src": "6947:7:1",
+ "statements": []
+ },
+ "documentation": null,
+ "id": 419,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "updateNodeInfo",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 416,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 409,
+ "name": "Name",
+ "nodeType": "VariableDeclaration",
+ "scope": 419,
+ "src": "6828:18:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 408,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "6828:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 411,
+ "name": "Email",
+ "nodeType": "VariableDeclaration",
+ "scope": 419,
+ "src": "6848:19:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 410,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "6848:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 413,
+ "name": "Location",
+ "nodeType": "VariableDeclaration",
+ "scope": 419,
+ "src": "6897:22:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 412,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "6897:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 415,
+ "name": "Url",
+ "nodeType": "VariableDeclaration",
+ "scope": 419,
+ "src": "6921:17:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 414,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "6921:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "6827:112:1"
+ },
+ "returnParameters": {
+ "id": 417,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "6947:0:1"
+ },
+ "scope": 430,
+ "src": "6804:150:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 422,
+ "nodeType": "Block",
+ "src": "7005:7:1",
+ "statements": []
+ },
+ "documentation": null,
+ "id": 423,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "withdraw",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 420,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "6995:2:1"
+ },
+ "returnParameters": {
+ "id": 421,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "7005:0:1"
+ },
+ "scope": 430,
+ "src": "6978:34:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 428,
+ "nodeType": "Block",
+ "src": "7091:7:1",
+ "statements": []
+ },
+ "documentation": null,
+ "id": 429,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "withdrawable",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 424,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "7061:2:1"
+ },
+ "returnParameters": {
+ "id": 427,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 426,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 429,
+ "src": "7085:4:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 425,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "7085:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "7084:6:1"
+ },
+ "scope": 430,
+ "src": "7040:58:1",
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "public"
+ }
+ ],
+ "scope": 431,
+ "src": "26:7074:1"
+ }
+ ],
+ "src": "0:7101:1"
+ },
+ "compiler": {
+ "name": "solc",
+ "version": "0.5.11+commit.c082d0b4.Emscripten.clang"
+ },
+ "networks": {},
+ "schemaVersion": "3.0.11",
+ "updatedAt": "2019-09-29T03:11:52.542Z",
+ "devdoc": {
+ "methods": {}
+ },
+ "userdoc": {
+ "methods": {}
+ }
+} \ No newline at end of file
diff --git a/build/contracts/GovernanceMock.json b/build/contracts/GovernanceMock.json
new file mode 100644
index 0000000..195cbad
--- /dev/null
+++ b/build/contracts/GovernanceMock.json
@@ -0,0 +1,10900 @@
+{
+ "contractName": "GovernanceMock",
+ "abi": [
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "staked",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "name": "nodes",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "owner",
+ "type": "address"
+ },
+ {
+ "internalType": "bytes",
+ "name": "publicKey",
+ "type": "bytes"
+ },
+ {
+ "internalType": "uint256",
+ "name": "staked",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "fined",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "name",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "email",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "location",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "url",
+ "type": "string"
+ },
+ {
+ "internalType": "uint256",
+ "name": "unstaked",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "unstakedAt",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "minStake",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "name": "nodesOffsetByAddress",
+ "outputs": [
+ {
+ "internalType": "int256",
+ "name": "",
+ "type": "int256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "unstaked",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "name": "registered",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "owner",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "bytes",
+ "name": "publicKey",
+ "type": "bytes"
+ },
+ {
+ "indexed": false,
+ "internalType": "string",
+ "name": "name",
+ "type": "string"
+ },
+ {
+ "indexed": false,
+ "internalType": "string",
+ "name": "email",
+ "type": "string"
+ },
+ {
+ "indexed": false,
+ "internalType": "string",
+ "name": "location",
+ "type": "string"
+ },
+ {
+ "indexed": false,
+ "internalType": "string",
+ "name": "url",
+ "type": "string"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "value",
+ "type": "uint256"
+ }
+ ],
+ "name": "Register",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "owner",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "amount",
+ "type": "uint256"
+ }
+ ],
+ "name": "Staked",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "owner",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "amount",
+ "type": "uint256"
+ }
+ ],
+ "name": "Unstaked",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "owner",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "amount",
+ "type": "uint256"
+ }
+ ],
+ "name": "Withdrawn",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "NodeAddress",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "NewOwnerAddress",
+ "type": "address"
+ }
+ ],
+ "name": "NodeOwnershipTransfered",
+ "type": "event"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "bytes",
+ "name": "publicKey",
+ "type": "bytes"
+ },
+ {
+ "internalType": "string",
+ "name": "name",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "email",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "location",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "url",
+ "type": "string"
+ }
+ ],
+ "name": "register",
+ "outputs": [],
+ "payable": true,
+ "stateMutability": "payable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [],
+ "name": "stake",
+ "outputs": [],
+ "payable": true,
+ "stateMutability": "payable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "amount",
+ "type": "uint256"
+ }
+ ],
+ "name": "unstake",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [],
+ "name": "withdraw",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "withdrawable",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "bytes",
+ "name": "key",
+ "type": "bytes"
+ }
+ ],
+ "name": "replaceNodePublicKey",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "NewOwner",
+ "type": "address"
+ }
+ ],
+ "name": "transferNodeOwnership",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ }
+ ],
+ "metadata": "{\"compiler\":{\"version\":\"0.5.11+commit.c082d0b4\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"staked\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"nodes\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"staked\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fined\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"email\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"location\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"url\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"unstaked\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unstakedAt\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"unstake\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"minStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"stake\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"withdraw\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"key\",\"type\":\"bytes\"}],\"name\":\"replaceNodePublicKey\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"NewOwner\",\"type\":\"address\"}],\"name\":\"transferNodeOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"withdrawable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nodesOffsetByAddress\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"unstaked\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"registered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"email\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"location\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"url\",\"type\":\"string\"}],\"name\":\"register\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"email\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"location\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"url\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Register\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Staked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Unstaked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"NodeAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"NewOwnerAddress\",\"type\":\"address\"}],\"name\":\"NodeOwnershipTransfered\",\"type\":\"event\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/Users/aitjcize/Work/tangerine-network/node-staker/contracts/test/GovernanceMock.sol\":\"GovernanceMock\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/aitjcize/Work/tangerine-network/node-staker/contracts/test/GovernanceMock.sol\":{\"keccak256\":\"0x90dc9c2ce198dc71a468bd8c1857ac2f91161254c11c038142684f70f3cd5fac\",\"urls\":[\"bzz-raw://e923208b210a70e3f8f64f56270a4d58e1df7c51beb909f58b3e8e8ddd2604c1\",\"dweb:/ipfs/QmVvPbp8F26SgEgoKze73S2hEq3bZWTn16EbbZpmkothT2\"]}},\"version\":1}",
+ "bytecode": "0x608060405260006003556000600455670de0b6b3a764000060055534801561002657600080fd5b50611448806100366000396000f3fe6080604052600436106100c25760003560e01c80633f007c201161007f578063850311231161005957806385031123146104c8578063acbc2e8a146104fb578063b2dd5c0714610510578063d242f4cc14610543576100c2565b80633f007c20146103bb5780634264ecf91461046c578063501883011461049f576100c2565b80630b76619b146100c75780631c53c280146100ee5780632e17de781461035d578063375b3c0a146103895780633a4b66f11461039e5780633ccfd60b146103a6575b600080fd5b3480156100d357600080fd5b506100dc6107fb565b60408051918252519081900360200190f35b3480156100fa57600080fd5b506101186004803603602081101561011157600080fd5b5035610801565b604051808b6001600160a01b03166001600160a01b03168152602001806020018a81526020018981526020018060200180602001806020018060200188815260200187815260200186810386528f818151815260200191508051906020019080838360005b8381101561019557818101518382015260200161017d565b50505050905090810190601f1680156101c25780820380516001836020036101000a031916815260200191505b5086810385528c5181528c516020918201918e019080838360005b838110156101f55781810151838201526020016101dd565b50505050905090810190601f1680156102225780820380516001836020036101000a031916815260200191505b5086810384528b5181528b516020918201918d019080838360005b8381101561025557818101518382015260200161023d565b50505050905090810190601f1680156102825780820380516001836020036101000a031916815260200191505b5086810383528a5181528a516020918201918c019080838360005b838110156102b557818101518382015260200161029d565b50505050905090810190601f1680156102e25780820380516001836020036101000a031916815260200191505b5086810382528951815289516020918201918b019080838360005b838110156103155781810151838201526020016102fd565b50505050905090810190601f1680156103425780820380516001836020036101000a031916815260200191505b509f5050505050505050505050505050505060405180910390f35b34801561036957600080fd5b506103876004803603602081101561038057600080fd5b5035610b2b565b005b34801561039557600080fd5b506100dc610c05565b610387610c0b565b3480156103b257600080fd5b50610387610c92565b3480156103c757600080fd5b50610387600480360360208110156103de57600080fd5b810190602081018135600160201b8111156103f857600080fd5b82018360208201111561040a57600080fd5b803590602001918460018302840111600160201b8311171561042b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610d91945050505050565b34801561047857600080fd5b506103876004803603602081101561048f57600080fd5b50356001600160a01b0316610de0565b3480156104ab57600080fd5b506104b4610e19565b604080519115158252519081900360200190f35b3480156104d457600080fd5b506100dc600480360360208110156104eb57600080fd5b50356001600160a01b0316610e59565b34801561050757600080fd5b506100dc610e6b565b34801561051c57600080fd5b506104b46004803603602081101561053357600080fd5b50356001600160a01b0316610e71565b610387600480360360a081101561055957600080fd5b810190602081018135600160201b81111561057357600080fd5b82018360208201111561058557600080fd5b803590602001918460018302840111600160201b831117156105a657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156105f857600080fd5b82018360208201111561060a57600080fd5b803590602001918460018302840111600160201b8311171561062b57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561067d57600080fd5b82018360208201111561068f57600080fd5b803590602001918460018302840111600160201b831117156106b057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561070257600080fd5b82018360208201111561071457600080fd5b803590602001918460018302840111600160201b8311171561073557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561078757600080fd5b82018360208201111561079957600080fd5b803590602001918460018302840111600160201b831117156107ba57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610e86945050505050565b60035481565b6000818154811061080e57fe5b6000918252602091829020600a9091020180546001808301805460408051601f60026000199685161561010002969096019093169490940491820187900487028401870190528083526001600160a01b0390931695509293909291908301828280156108bb5780601f10610890576101008083540402835291602001916108bb565b820191906000526020600020905b81548152906001019060200180831161089e57829003601f168201915b505050505090806002015490806003015490806004018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109655780601f1061093a57610100808354040283529160200191610965565b820191906000526020600020905b81548152906001019060200180831161094857829003601f168201915b5050505060058301805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529495949350908301828280156109f55780601f106109ca576101008083540402835291602001916109f5565b820191906000526020600020905b8154815290600101906020018083116109d857829003601f168201915b5050505060068301805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152949594935090830182828015610a855780601f10610a5a57610100808354040283529160200191610a85565b820191906000526020600020905b815481529060010190602001808311610a6857829003601f168201915b5050505060078301805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152949594935090830182828015610b155780601f10610aea57610100808354040283529160200191610b15565b820191906000526020600020905b815481529060010190602001808311610af857829003601f168201915b505050505090806008015490806009015490508a565b6003805482900390556004805482019055336000908152600160205260408120548154909190819083908110610b5d57fe5b90600052602060002090600a020190508060020154831115610bb05760405162461bcd60e51b81526004018080602001828103825260218152602001806113f36021913960400191505060405180910390fd5b600281018054849003905560088101805484019055604080513381526020810185905281517f0f5bb82176feb1b5e747e28471aa92156a04d9f3ab9f45f28e2d704232b93f75929181900390910190a1505050565b60055481565b6003805434019055336000908152600160205260408120548154909190819083908110610c3457fe5b60009182526020918290206002600a90920201908101805434908101909155604080513381529384019190915280519193507f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d928290030190a15050565b336000908152600160205260408120548154909190819083908110610cb357fe5b60009182526020909120600a9091020160088101549091503031811115610d13576040805162461bcd60e51b815260206004820152600f60248201526e696e76616c69642062616c616e636560881b604482015290519081900360640190fd5b600480548290039055600060088301819055604051339183156108fc02918491818181858888f19350505050158015610d50573d6000803e3d6000fd5b50604080513381526020810183905281517f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5929181900390910190a1505050565b336000908152600160205260408120548154909190819083908110610db257fe5b90600052602060002090600a0201905082816001019080519060200190610dda9291906112fe565b50505050565b6040516001600160a01b0382169033907f63616cf4caeee172ed91719b5e000da424d56855ee726aedb0a1d74fb3f1db2a90600090a350565b3360009081526001602052604081205481548290819083908110610e3957fe5b60009182526020909120600a909102016008015430311015925050505b90565b60016020526000908152604090205481565b60045481565b60026020526000908152604090205460ff1681565b3360009081526002602052604090205460ff1615610eeb576040805162461bcd60e51b815260206004820152601c60248201527f73656e6465722061646472657373206973207265676973746572656400000000604482015290519081900360640190fd5b336000908152600260205260409020805460ff191660011790556003805434019055610f1561137c565b5060408051610140810182523380825260208083018981523484860152600060608501819052608085018a905260a0850189905260c0850188905260e08501879052610100850181905261012085018190528054938152600180845295812084905594830180865594805283517f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563600a90940293840180546001600160a01b0319166001600160a01b039092169190911781559051805194959486949293611001937f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e564019201906112fe565b506040820151600282015560608201516003820155608082015180516110319160048401916020909101906112fe565b5060a0820151805161104d9160058401916020909101906112fe565b5060c082015180516110699160068401916020909101906112fe565b5060e082015180516110859160078401916020909101906112fe565b50610100820151816008015561012082015181600901555050507f471c608285a25d40223ae624c34aa7bf38348e6cc163d3fbeca102527a2a9ee73387878787873460405180886001600160a01b03166001600160a01b03168152602001806020018060200180602001806020018060200187815260200186810386528c818151815260200191508051906020019080838360005b8381101561113257818101518382015260200161111a565b50505050905090810190601f16801561115f5780820380516001836020036101000a031916815260200191505b5086810385528b5181528b516020918201918d019080838360005b8381101561119257818101518382015260200161117a565b50505050905090810190601f1680156111bf5780820380516001836020036101000a031916815260200191505b5086810384528a5181528a516020918201918c019080838360005b838110156111f25781810151838201526020016111da565b50505050905090810190601f16801561121f5780820380516001836020036101000a031916815260200191505b5086810383528951815289516020918201918b019080838360005b8381101561125257818101518382015260200161123a565b50505050905090810190601f16801561127f5780820380516001836020036101000a031916815260200191505b5086810382528851815288516020918201918a019080838360005b838110156112b257818101518382015260200161129a565b50505050905090810190601f1680156112df5780820380516001836020036101000a031916815260200191505b509c5050505050505050505050505060405180910390a1505050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061133f57805160ff191683800117855561136c565b8280016001018555821561136c579182015b8281111561136c578251825591602001919060010190611351565b506113789291506113d8565b5090565b60405180610140016040528060006001600160a01b031681526020016060815260200160008152602001600081526020016060815260200160608152602001606081526020016060815260200160008152602001600081525090565b610e5691905b8082111561137857600081556001016113de56fe756e7374616b6520616d6f756e74206c6172676572207468616e207374616b6564a265627a7a723158208650d3b6bbc231c83e41894a417fed89b5bc04027331a124ac72bff73ff0e9a564736f6c634300050b0032",
+ "deployedBytecode": "0x6080604052600436106100c25760003560e01c80633f007c201161007f578063850311231161005957806385031123146104c8578063acbc2e8a146104fb578063b2dd5c0714610510578063d242f4cc14610543576100c2565b80633f007c20146103bb5780634264ecf91461046c578063501883011461049f576100c2565b80630b76619b146100c75780631c53c280146100ee5780632e17de781461035d578063375b3c0a146103895780633a4b66f11461039e5780633ccfd60b146103a6575b600080fd5b3480156100d357600080fd5b506100dc6107fb565b60408051918252519081900360200190f35b3480156100fa57600080fd5b506101186004803603602081101561011157600080fd5b5035610801565b604051808b6001600160a01b03166001600160a01b03168152602001806020018a81526020018981526020018060200180602001806020018060200188815260200187815260200186810386528f818151815260200191508051906020019080838360005b8381101561019557818101518382015260200161017d565b50505050905090810190601f1680156101c25780820380516001836020036101000a031916815260200191505b5086810385528c5181528c516020918201918e019080838360005b838110156101f55781810151838201526020016101dd565b50505050905090810190601f1680156102225780820380516001836020036101000a031916815260200191505b5086810384528b5181528b516020918201918d019080838360005b8381101561025557818101518382015260200161023d565b50505050905090810190601f1680156102825780820380516001836020036101000a031916815260200191505b5086810383528a5181528a516020918201918c019080838360005b838110156102b557818101518382015260200161029d565b50505050905090810190601f1680156102e25780820380516001836020036101000a031916815260200191505b5086810382528951815289516020918201918b019080838360005b838110156103155781810151838201526020016102fd565b50505050905090810190601f1680156103425780820380516001836020036101000a031916815260200191505b509f5050505050505050505050505050505060405180910390f35b34801561036957600080fd5b506103876004803603602081101561038057600080fd5b5035610b2b565b005b34801561039557600080fd5b506100dc610c05565b610387610c0b565b3480156103b257600080fd5b50610387610c92565b3480156103c757600080fd5b50610387600480360360208110156103de57600080fd5b810190602081018135600160201b8111156103f857600080fd5b82018360208201111561040a57600080fd5b803590602001918460018302840111600160201b8311171561042b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610d91945050505050565b34801561047857600080fd5b506103876004803603602081101561048f57600080fd5b50356001600160a01b0316610de0565b3480156104ab57600080fd5b506104b4610e19565b604080519115158252519081900360200190f35b3480156104d457600080fd5b506100dc600480360360208110156104eb57600080fd5b50356001600160a01b0316610e59565b34801561050757600080fd5b506100dc610e6b565b34801561051c57600080fd5b506104b46004803603602081101561053357600080fd5b50356001600160a01b0316610e71565b610387600480360360a081101561055957600080fd5b810190602081018135600160201b81111561057357600080fd5b82018360208201111561058557600080fd5b803590602001918460018302840111600160201b831117156105a657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156105f857600080fd5b82018360208201111561060a57600080fd5b803590602001918460018302840111600160201b8311171561062b57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561067d57600080fd5b82018360208201111561068f57600080fd5b803590602001918460018302840111600160201b831117156106b057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561070257600080fd5b82018360208201111561071457600080fd5b803590602001918460018302840111600160201b8311171561073557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561078757600080fd5b82018360208201111561079957600080fd5b803590602001918460018302840111600160201b831117156107ba57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610e86945050505050565b60035481565b6000818154811061080e57fe5b6000918252602091829020600a9091020180546001808301805460408051601f60026000199685161561010002969096019093169490940491820187900487028401870190528083526001600160a01b0390931695509293909291908301828280156108bb5780601f10610890576101008083540402835291602001916108bb565b820191906000526020600020905b81548152906001019060200180831161089e57829003601f168201915b505050505090806002015490806003015490806004018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109655780601f1061093a57610100808354040283529160200191610965565b820191906000526020600020905b81548152906001019060200180831161094857829003601f168201915b5050505060058301805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529495949350908301828280156109f55780601f106109ca576101008083540402835291602001916109f5565b820191906000526020600020905b8154815290600101906020018083116109d857829003601f168201915b5050505060068301805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152949594935090830182828015610a855780601f10610a5a57610100808354040283529160200191610a85565b820191906000526020600020905b815481529060010190602001808311610a6857829003601f168201915b5050505060078301805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152949594935090830182828015610b155780601f10610aea57610100808354040283529160200191610b15565b820191906000526020600020905b815481529060010190602001808311610af857829003601f168201915b505050505090806008015490806009015490508a565b6003805482900390556004805482019055336000908152600160205260408120548154909190819083908110610b5d57fe5b90600052602060002090600a020190508060020154831115610bb05760405162461bcd60e51b81526004018080602001828103825260218152602001806113f36021913960400191505060405180910390fd5b600281018054849003905560088101805484019055604080513381526020810185905281517f0f5bb82176feb1b5e747e28471aa92156a04d9f3ab9f45f28e2d704232b93f75929181900390910190a1505050565b60055481565b6003805434019055336000908152600160205260408120548154909190819083908110610c3457fe5b60009182526020918290206002600a90920201908101805434908101909155604080513381529384019190915280519193507f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d928290030190a15050565b336000908152600160205260408120548154909190819083908110610cb357fe5b60009182526020909120600a9091020160088101549091503031811115610d13576040805162461bcd60e51b815260206004820152600f60248201526e696e76616c69642062616c616e636560881b604482015290519081900360640190fd5b600480548290039055600060088301819055604051339183156108fc02918491818181858888f19350505050158015610d50573d6000803e3d6000fd5b50604080513381526020810183905281517f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5929181900390910190a1505050565b336000908152600160205260408120548154909190819083908110610db257fe5b90600052602060002090600a0201905082816001019080519060200190610dda9291906112fe565b50505050565b6040516001600160a01b0382169033907f63616cf4caeee172ed91719b5e000da424d56855ee726aedb0a1d74fb3f1db2a90600090a350565b3360009081526001602052604081205481548290819083908110610e3957fe5b60009182526020909120600a909102016008015430311015925050505b90565b60016020526000908152604090205481565b60045481565b60026020526000908152604090205460ff1681565b3360009081526002602052604090205460ff1615610eeb576040805162461bcd60e51b815260206004820152601c60248201527f73656e6465722061646472657373206973207265676973746572656400000000604482015290519081900360640190fd5b336000908152600260205260409020805460ff191660011790556003805434019055610f1561137c565b5060408051610140810182523380825260208083018981523484860152600060608501819052608085018a905260a0850189905260c0850188905260e08501879052610100850181905261012085018190528054938152600180845295812084905594830180865594805283517f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563600a90940293840180546001600160a01b0319166001600160a01b039092169190911781559051805194959486949293611001937f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e564019201906112fe565b506040820151600282015560608201516003820155608082015180516110319160048401916020909101906112fe565b5060a0820151805161104d9160058401916020909101906112fe565b5060c082015180516110699160068401916020909101906112fe565b5060e082015180516110859160078401916020909101906112fe565b50610100820151816008015561012082015181600901555050507f471c608285a25d40223ae624c34aa7bf38348e6cc163d3fbeca102527a2a9ee73387878787873460405180886001600160a01b03166001600160a01b03168152602001806020018060200180602001806020018060200187815260200186810386528c818151815260200191508051906020019080838360005b8381101561113257818101518382015260200161111a565b50505050905090810190601f16801561115f5780820380516001836020036101000a031916815260200191505b5086810385528b5181528b516020918201918d019080838360005b8381101561119257818101518382015260200161117a565b50505050905090810190601f1680156111bf5780820380516001836020036101000a031916815260200191505b5086810384528a5181528a516020918201918c019080838360005b838110156111f25781810151838201526020016111da565b50505050905090810190601f16801561121f5780820380516001836020036101000a031916815260200191505b5086810383528951815289516020918201918b019080838360005b8381101561125257818101518382015260200161123a565b50505050905090810190601f16801561127f5780820380516001836020036101000a031916815260200191505b5086810382528851815288516020918201918a019080838360005b838110156112b257818101518382015260200161129a565b50505050905090810190601f1680156112df5780820380516001836020036101000a031916815260200191505b509c5050505050505050505050505060405180910390a1505050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061133f57805160ff191683800117855561136c565b8280016001018555821561136c579182015b8281111561136c578251825591602001919060010190611351565b506113789291506113d8565b5090565b60405180610140016040528060006001600160a01b031681526020016060815260200160008152602001600081526020016060815260200160608152602001606081526020016060815260200160008152602001600081525090565b610e5691905b8082111561137857600081556001016113de56fe756e7374616b6520616d6f756e74206c6172676572207468616e207374616b6564a265627a7a723158208650d3b6bbc231c83e41894a417fed89b5bc04027331a124ac72bff73ff0e9a564736f6c634300050b0032",
+ "sourceMap": "187:3088:4:-;;;586:1;562:25;;617:1;591:27;;648:19;622:45;;187:3088;8:9:-1;5:2;;;30:1;27;20:12;5:2;187:3088:4;;;;;;;",
+ "deployedSourceMap": "187:3088:4:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;562:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;562:25:4;;;:::i;:::-;;;;;;;;;;;;;;;;434:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;434:19:4;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;434:19:4;;:::i;:::-;;;;;-1:-1:-1;;;;;434:19:4;-1:-1:-1;;;;;434:19:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;434:19:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;434:19:4;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;434:19:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;434:19:4;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;434:19:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;434:19:4;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;434:19:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;434:19:4;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;434:19:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1939:361;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1939:361:4;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1939:361:4;;:::i;:::-;;622:45;;8:9:-1;5:2;;;30:1;27;20:12;5:2;622:45:4;;;:::i;1701:234::-;;;:::i;2304:403::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2304:403:4;;;:::i;2966:186::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2966:186:4;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2966:186:4;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;2966:186:4;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2966:186:4;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2966:186:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;2966:186:4;;-1:-1:-1;2966:186:4;;-1:-1:-1;;;;;2966:186:4:i;3156:117::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3156:117:4;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3156:117:4;-1:-1:-1;;;;;3156:117:4;;:::i;2711:251::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2711:251:4;;;:::i;:::-;;;;;;;;;;;;;;;;;;457:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;457:54:4;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;457:54:4;-1:-1:-1;;;;;457:54:4;;:::i;591:27::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;591:27:4;;;:::i;516:42::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;516:42:4;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;516:42:4;-1:-1:-1;;;;;516:42:4;;:::i;1067:630::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;1067:630:4;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;1067:630:4;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1067:630:4;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1067:630:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1067:630:4;;;;;;;;-1:-1:-1;1067:630:4;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;1067:630:4;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1067:630:4;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1067:630:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1067:630:4;;;;;;;;-1:-1:-1;1067:630:4;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;1067:630:4;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1067:630:4;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1067:630:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1067:630:4;;;;;;;;-1:-1:-1;1067:630:4;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;1067:630:4;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1067:630:4;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1067:630:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1067:630:4;;;;;;;;-1:-1:-1;1067:630:4;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;1067:630:4;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1067:630:4;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1067:630:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1067:630:4;;-1:-1:-1;1067:630:4;;-1:-1:-1;;;;;1067:630:4:i;562:25::-;;;;:::o;434:19::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;434:19:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;434:19:4;;;;-1:-1:-1;434:19:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;434:19:4;;;;;;;;;;;;;;;;-1:-1:-1;;434:19:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;434:19:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;434:19:4;;;;;;;;;;;;;;;;-1:-1:-1;;434:19:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;434:19:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;434:19:4;;;;;;;;;;;;;;;;-1:-1:-1;;434:19:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;434:19:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1939:361::-;1985:6;:16;;;;;;;2007:8;:18;;;;;;2075:10;1985:6;2054:32;;;-1:-1:-1;2054:32:4;;;;;;2113:13;;2054:32;;1985:6;;;2054:32;;2113:13;;;;;;;;;;;;;;;;2093:33;;2150:4;:11;;;2140:6;:21;;2132:67;;;;-1:-1:-1;;;2132:67:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2205:11;;;:21;;;;;;;2232:13;;;:23;;;;;;2267:28;;;2276:10;2267:28;;;;;;;;;;;;;;;;;;;;;1939:361;;;:::o;622:45::-;;;;:::o;1701:234::-;1739:6;:19;;1749:9;1739:19;;;1808:10;1739:6;1787:32;;;-1:-1:-1;1787:32:4;;;;;;1846:13;;1787:32;;1739:6;;;1787:32;;1846:13;;;;;;;;;;;;;;;1865:11;1846:13;;;;;1865:11;;;:24;;1880:9;1865:24;;;;;;1901:29;;;1908:10;1901:29;;;;;;;;;;;1846:13;;-1:-1:-1;1901:29:4;;;;;;;;1701:234;;:::o;2304:403::-;2380:10;2337:14;2359:32;;;:20;:32;;;;;;2418:13;;2359:32;;2337:14;;;2359:32;;2418:13;;;;;;;;;;;;;;;;;;;2454;;;;2418;;-1:-1:-1;2538:4:4;2530:21;:31;-1:-1:-1;2530:31:4;2522:59;;;;;-1:-1:-1;;;2522:59:4;;;;;;;;;;;;-1:-1:-1;;;2522:59:4;;;;;;;;;;;;;;;2588:8;:18;;;;;;;:8;2612:13;;;:17;;;2635:27;;:10;;:27;;;;;2600:6;;2635:27;2588:8;2635:27;2600:6;2635:10;:27;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;2673:29:4;;;2683:10;2673:29;;;;;;;;;;;;;;;;;;;;;2304:403;;;:::o;2966:186::-;3070:10;3027:14;3049:32;;;:20;:32;;;;;;3108:13;;3049:32;;3027:14;;;3049:32;;3108:13;;;;;;;;;;;;;;;;3088:33;;3144:3;3127:4;:14;;:20;;;;;;;;;;;;:::i;:::-;;2966:186;;;:::o;3156:117::-;3223:45;;-1:-1:-1;;;;;3223:45:4;;;3247:10;;3223:45;;;;;3156:117;:::o;2711:251::-;2811:10;2756:4;2790:32;;;:20;:32;;;;;;2849:13;;2756:4;;;;2790:32;;2849:13;;;;;;;;;;;;;;;;;;;2885;;;2934:4;2926:21;-1:-1:-1;2926:31:4;;-1:-1:-1;;;2711:251:4;;:::o;457:54::-;;;;;;;;;;;;;:::o;591:27::-;;;;:::o;516:42::-;;;;;;;;;;;;;;;:::o;1067:630::-;1258:10;1247:22;;;;:10;:22;;;;;;;;1246:23;1238:64;;;;;-1:-1:-1;;;1238:64:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;1319:10;1308:22;;;;:10;:22;;;;;:29;;-1:-1:-1;;1308:29:4;1333:4;1308:29;;;1343:6;:19;;1353:9;1343:19;;;1369:16;;:::i;:::-;-1:-1:-1;1388:141:4;;;;;;;;1400:10;1388:141;;;;;;;;;;1435:9;1388:141;;;;-1:-1:-1;1388:141:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1575:12;;1536:32;;;:20;:32;;;;;;:52;;;23:18:-1;;;45:23;;;1594:16:4;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1594:16:4;-1:-1:-1;;;;;1594:16:4;;;;;;;;;;;;;1388:141;;23:18:-1;1388:141:4;;1594:16;;;;;;;;;;:::i;:::-;-1:-1:-1;1594:16:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1594:16:4;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1594:16:4;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1594:16:4;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;1622:70;1631:10;1643:9;1654:4;1660:5;1667:8;1677:3;1682:9;1622:70;;;;-1:-1:-1;;;;;1622:70:4;-1:-1:-1;;;;;1622:70:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1622:70:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1622:70:4;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1622:70:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1622:70:4;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1622:70:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1622:70:4;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1622:70:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1622:70:4;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1622:70:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1067:630;;;;;;:::o;187:3088::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;187:3088:4;;;-1:-1:-1;187:3088:4;:::i;:::-;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;;;187:3088:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;",
+ "source": "pragma solidity ^0.5.11;\n\n// This contract mocks the Tangerine governance contract ONLY FOR TESTING PURPOSE,\n// and its behavior is not exaclty same as the Tangerine governance contract.\ncontract GovernanceMock {\n\n struct Node {\n address owner;\n bytes publicKey;\n uint256 staked;\n uint256 fined;\n string name;\n string email;\n string location;\n string url;\n uint256 unstaked;\n uint256 unstakedAt;\n }\n\n Node[] public nodes;\n mapping(address => int256) public nodesOffsetByAddress;\n\n mapping(address => bool) public registered;\n uint256 public staked = 0;\n uint256 public unstaked = 0;\n uint256 public minStake = 1000000000000000000;\n\n event Register(\n address owner,\n bytes publicKey,\n string name,\n string email,\n string location,\n string url,\n uint256 value\n );\n event Staked(address owner, uint256 amount);\n event Unstaked(address owner, uint256 amount);\n event Withdrawn(address owner, uint256 amount);\n event NodeOwnershipTransfered(address indexed NodeAddress, address indexed NewOwnerAddress);\n\n function register(\n bytes memory publicKey,\n string memory name,\n string memory email,\n string memory location,\n string memory url\n ) public payable {\n require(!registered[msg.sender], \"sender address is registered\");\n registered[msg.sender] = true;\n staked += msg.value;\n\n Node memory node = Node(\n msg.sender,\n publicKey,\n msg.value,\n 0,\n name,\n email,\n location,\n url,\n 0,\n 0\n );\n\n nodesOffsetByAddress[msg.sender] = int(nodes.length);\n nodes.push(node);\n\n emit Register(msg.sender, publicKey, name, email, location, url, msg.value);\n }\n\n function stake() public payable {\n staked += msg.value;\n\n uint256 offset = uint(nodesOffsetByAddress[msg.sender]);\n Node storage node = nodes[offset];\n node.staked += msg.value;\n\n emit Staked(msg.sender, msg.value);\n }\n\n function unstake(uint256 amount) public {\n staked -= amount;\n unstaked += amount;\n\n uint256 offset = uint(nodesOffsetByAddress[msg.sender]);\n Node storage node = nodes[offset];\n require(amount <= node.staked, \"unstake amount larger than staked\");\n node.staked -= amount;\n node.unstaked += amount;\n\n emit Unstaked(msg.sender, amount);\n }\n\n function withdraw() public {\n uint256 offset = uint(nodesOffsetByAddress[msg.sender]);\n Node storage node = nodes[offset];\n uint256 amount = node.unstaked;\n require(amount >= 0, \"no unstaked balance\");\n require(address(this).balance >= amount, \"invalid balance\");\n\n unstaked -= amount;\n node.unstaked = 0;\n msg.sender.transfer(amount);\n emit Withdrawn(msg.sender, amount);\n }\n\n function withdrawable() public view returns (bool) {\n uint256 offset = uint(nodesOffsetByAddress[msg.sender]);\n Node storage node = nodes[offset];\n uint256 amount = node.unstaked;\n return amount >= 0 && address(this).balance >= amount;\n }\n\n function replaceNodePublicKey(bytes memory key) public {\n uint256 offset = uint(nodesOffsetByAddress[msg.sender]);\n Node storage node = nodes[offset];\n node.publicKey = key;\n }\n\n function transferNodeOwnership(address NewOwner) public {\n emit NodeOwnershipTransfered(msg.sender, NewOwner);\n }\n}\n",
+ "sourcePath": "/Users/aitjcize/Work/tangerine-network/node-staker/contracts/test/GovernanceMock.sol",
+ "ast": {
+ "absolutePath": "/Users/aitjcize/Work/tangerine-network/node-staker/contracts/test/GovernanceMock.sol",
+ "exportedSymbols": {
+ "GovernanceMock": [
+ 1259
+ ]
+ },
+ "id": 1260,
+ "nodeType": "SourceUnit",
+ "nodes": [
+ {
+ "id": 863,
+ "literals": [
+ "solidity",
+ "^",
+ "0.5",
+ ".11"
+ ],
+ "nodeType": "PragmaDirective",
+ "src": "0:24:4"
+ },
+ {
+ "baseContracts": [],
+ "contractDependencies": [],
+ "contractKind": "contract",
+ "documentation": null,
+ "fullyImplemented": true,
+ "id": 1259,
+ "linearizedBaseContracts": [
+ 1259
+ ],
+ "name": "GovernanceMock",
+ "nodeType": "ContractDefinition",
+ "nodes": [
+ {
+ "canonicalName": "GovernanceMock.Node",
+ "id": 884,
+ "members": [
+ {
+ "constant": false,
+ "id": 865,
+ "name": "owner",
+ "nodeType": "VariableDeclaration",
+ "scope": 884,
+ "src": "234:13:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 864,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "234:7:4",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 867,
+ "name": "publicKey",
+ "nodeType": "VariableDeclaration",
+ "scope": 884,
+ "src": "253:15:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 866,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "253:5:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 869,
+ "name": "staked",
+ "nodeType": "VariableDeclaration",
+ "scope": 884,
+ "src": "274:14:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 868,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "274:7:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 871,
+ "name": "fined",
+ "nodeType": "VariableDeclaration",
+ "scope": 884,
+ "src": "294:13:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 870,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "294:7:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 873,
+ "name": "name",
+ "nodeType": "VariableDeclaration",
+ "scope": 884,
+ "src": "313:11:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 872,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "313:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 875,
+ "name": "email",
+ "nodeType": "VariableDeclaration",
+ "scope": 884,
+ "src": "330:12:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 874,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "330:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 877,
+ "name": "location",
+ "nodeType": "VariableDeclaration",
+ "scope": 884,
+ "src": "348:15:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 876,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "348:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 879,
+ "name": "url",
+ "nodeType": "VariableDeclaration",
+ "scope": 884,
+ "src": "369:10:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 878,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "369:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 881,
+ "name": "unstaked",
+ "nodeType": "VariableDeclaration",
+ "scope": 884,
+ "src": "385:16:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 880,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "385:7:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 883,
+ "name": "unstakedAt",
+ "nodeType": "VariableDeclaration",
+ "scope": 884,
+ "src": "407:18:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 882,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "407:7:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "name": "Node",
+ "nodeType": "StructDefinition",
+ "scope": 1259,
+ "src": "216:214:4",
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 887,
+ "name": "nodes",
+ "nodeType": "VariableDeclaration",
+ "scope": 1259,
+ "src": "434:19:4",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_Node_$884_storage_$dyn_storage",
+ "typeString": "struct GovernanceMock.Node[]"
+ },
+ "typeName": {
+ "baseType": {
+ "contractScope": null,
+ "id": 885,
+ "name": "Node",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 884,
+ "src": "434:4:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$884_storage_ptr",
+ "typeString": "struct GovernanceMock.Node"
+ }
+ },
+ "id": 886,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "434:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_Node_$884_storage_$dyn_storage_ptr",
+ "typeString": "struct GovernanceMock.Node[]"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 891,
+ "name": "nodesOffsetByAddress",
+ "nodeType": "VariableDeclaration",
+ "scope": 1259,
+ "src": "457:54:4",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
+ "typeString": "mapping(address => int256)"
+ },
+ "typeName": {
+ "id": 890,
+ "keyType": {
+ "id": 888,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "465:7:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Mapping",
+ "src": "457:26:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
+ "typeString": "mapping(address => int256)"
+ },
+ "valueType": {
+ "id": 889,
+ "name": "int256",
+ "nodeType": "ElementaryTypeName",
+ "src": "476:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_int256",
+ "typeString": "int256"
+ }
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 895,
+ "name": "registered",
+ "nodeType": "VariableDeclaration",
+ "scope": 1259,
+ "src": "516:42:4",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
+ "typeString": "mapping(address => bool)"
+ },
+ "typeName": {
+ "id": 894,
+ "keyType": {
+ "id": 892,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "524:7:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Mapping",
+ "src": "516:24:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
+ "typeString": "mapping(address => bool)"
+ },
+ "valueType": {
+ "id": 893,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "535:4:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 898,
+ "name": "staked",
+ "nodeType": "VariableDeclaration",
+ "scope": 1259,
+ "src": "562:25:4",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 896,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "562:7:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 897,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "586:1:4",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 901,
+ "name": "unstaked",
+ "nodeType": "VariableDeclaration",
+ "scope": 1259,
+ "src": "591:27:4",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 899,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "591:7:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 900,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "617:1:4",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 904,
+ "name": "minStake",
+ "nodeType": "VariableDeclaration",
+ "scope": 1259,
+ "src": "622:45:4",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 902,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "622:7:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": {
+ "argumentTypes": null,
+ "hexValue": "31303030303030303030303030303030303030",
+ "id": 903,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "648:19:4",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1000000000000000000_by_1",
+ "typeString": "int_const 1000000000000000000"
+ },
+ "value": "1000000000000000000"
+ },
+ "visibility": "public"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 920,
+ "name": "Register",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 919,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 906,
+ "indexed": false,
+ "name": "owner",
+ "nodeType": "VariableDeclaration",
+ "scope": 920,
+ "src": "692:13:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 905,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "692:7:4",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 908,
+ "indexed": false,
+ "name": "publicKey",
+ "nodeType": "VariableDeclaration",
+ "scope": 920,
+ "src": "711:15:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 907,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "711:5:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 910,
+ "indexed": false,
+ "name": "name",
+ "nodeType": "VariableDeclaration",
+ "scope": 920,
+ "src": "732:11:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 909,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "732:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 912,
+ "indexed": false,
+ "name": "email",
+ "nodeType": "VariableDeclaration",
+ "scope": 920,
+ "src": "749:12:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 911,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "749:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 914,
+ "indexed": false,
+ "name": "location",
+ "nodeType": "VariableDeclaration",
+ "scope": 920,
+ "src": "767:15:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 913,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "767:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 916,
+ "indexed": false,
+ "name": "url",
+ "nodeType": "VariableDeclaration",
+ "scope": 920,
+ "src": "788:10:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 915,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "788:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 918,
+ "indexed": false,
+ "name": "value",
+ "nodeType": "VariableDeclaration",
+ "scope": 920,
+ "src": "804:13:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 917,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "804:7:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "686:135:4"
+ },
+ "src": "672:150:4"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 926,
+ "name": "Staked",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 925,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 922,
+ "indexed": false,
+ "name": "owner",
+ "nodeType": "VariableDeclaration",
+ "scope": 926,
+ "src": "838:13:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 921,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "838:7:4",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 924,
+ "indexed": false,
+ "name": "amount",
+ "nodeType": "VariableDeclaration",
+ "scope": 926,
+ "src": "853:14:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 923,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "853:7:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "837:31:4"
+ },
+ "src": "825:44:4"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 932,
+ "name": "Unstaked",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 931,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 928,
+ "indexed": false,
+ "name": "owner",
+ "nodeType": "VariableDeclaration",
+ "scope": 932,
+ "src": "887:13:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 927,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "887:7:4",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 930,
+ "indexed": false,
+ "name": "amount",
+ "nodeType": "VariableDeclaration",
+ "scope": 932,
+ "src": "902:14:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 929,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "902:7:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "886:31:4"
+ },
+ "src": "872:46:4"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 938,
+ "name": "Withdrawn",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 937,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 934,
+ "indexed": false,
+ "name": "owner",
+ "nodeType": "VariableDeclaration",
+ "scope": 938,
+ "src": "937:13:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 933,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "937:7:4",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 936,
+ "indexed": false,
+ "name": "amount",
+ "nodeType": "VariableDeclaration",
+ "scope": 938,
+ "src": "952:14:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 935,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "952:7:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "936:31:4"
+ },
+ "src": "921:47:4"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 944,
+ "name": "NodeOwnershipTransfered",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 943,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 940,
+ "indexed": true,
+ "name": "NodeAddress",
+ "nodeType": "VariableDeclaration",
+ "scope": 944,
+ "src": "1001:27:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 939,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "1001:7:4",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 942,
+ "indexed": true,
+ "name": "NewOwnerAddress",
+ "nodeType": "VariableDeclaration",
+ "scope": 944,
+ "src": "1030:31:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 941,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "1030:7:4",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "1000:62:4"
+ },
+ "src": "971:92:4"
+ },
+ {
+ "body": {
+ "id": 1023,
+ "nodeType": "Block",
+ "src": "1232:465:4",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 962,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "UnaryOperation",
+ "operator": "!",
+ "prefix": true,
+ "src": "1246:23:4",
+ "subExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 958,
+ "name": "registered",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 895,
+ "src": "1247:10:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
+ "typeString": "mapping(address => bool)"
+ }
+ },
+ "id": 961,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 959,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "1258:3:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 960,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "1258:10:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "1247:22:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "73656e64657220616464726573732069732072656769737465726564",
+ "id": 963,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "1271:30:4",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_c24a0f5fdd53d2f742399d6417aa70a456bab998090535234528d61ce245c7e6",
+ "typeString": "literal_string \"sender address is registered\""
+ },
+ "value": "sender address is registered"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_c24a0f5fdd53d2f742399d6417aa70a456bab998090535234528d61ce245c7e6",
+ "typeString": "literal_string \"sender address is registered\""
+ }
+ ],
+ "id": 957,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 1534,
+ 1535
+ ],
+ "referencedDeclaration": 1535,
+ "src": "1238:7:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 964,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1238:64:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 965,
+ "nodeType": "ExpressionStatement",
+ "src": "1238:64:4"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 971,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 966,
+ "name": "registered",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 895,
+ "src": "1308:10:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
+ "typeString": "mapping(address => bool)"
+ }
+ },
+ "id": 969,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 967,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "1319:3:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 968,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "1319:10:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "1308:22:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "hexValue": "74727565",
+ "id": 970,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "bool",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "1333:4:4",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "value": "true"
+ },
+ "src": "1308:29:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "id": 972,
+ "nodeType": "ExpressionStatement",
+ "src": "1308:29:4"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 976,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 973,
+ "name": "staked",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 898,
+ "src": "1343:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "+=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 974,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "1353:3:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 975,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "value",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "1353:9:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "1343:19:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 977,
+ "nodeType": "ExpressionStatement",
+ "src": "1343:19:4"
+ },
+ {
+ "assignments": [
+ 979
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 979,
+ "name": "node",
+ "nodeType": "VariableDeclaration",
+ "scope": 1023,
+ "src": "1369:16:4",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$884_memory_ptr",
+ "typeString": "struct GovernanceMock.Node"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 978,
+ "name": "Node",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 884,
+ "src": "1369:4:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$884_storage_ptr",
+ "typeString": "struct GovernanceMock.Node"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 994,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 981,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "1400:3:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 982,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "1400:10:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 983,
+ "name": "publicKey",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 946,
+ "src": "1418:9:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 984,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "1435:3:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 985,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "value",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "1435:9:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 986,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "1452:1:4",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ {
+ "argumentTypes": null,
+ "id": 987,
+ "name": "name",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 948,
+ "src": "1461:4:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 988,
+ "name": "email",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 950,
+ "src": "1473:5:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 989,
+ "name": "location",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 952,
+ "src": "1486:8:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 990,
+ "name": "url",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 954,
+ "src": "1502:3:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 991,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "1513:1:4",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 992,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "1522:1:4",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ },
+ {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ },
+ {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ },
+ {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ },
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "id": 980,
+ "name": "Node",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 884,
+ "src": "1388:4:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_struct$_Node_$884_storage_ptr_$",
+ "typeString": "type(struct GovernanceMock.Node storage pointer)"
+ }
+ },
+ "id": 993,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "structConstructorCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1388:141:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$884_memory",
+ "typeString": "struct GovernanceMock.Node memory"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "1369:160:4"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1003,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 995,
+ "name": "nodesOffsetByAddress",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 891,
+ "src": "1536:20:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
+ "typeString": "mapping(address => int256)"
+ }
+ },
+ "id": 998,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 996,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "1557:3:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 997,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "1557:10:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "1536:32:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_int256",
+ "typeString": "int256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1000,
+ "name": "nodes",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 887,
+ "src": "1575:5:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_Node_$884_storage_$dyn_storage",
+ "typeString": "struct GovernanceMock.Node storage ref[] storage ref"
+ }
+ },
+ "id": 1001,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "1575:12:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 999,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "1571:3:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_int256_$",
+ "typeString": "type(int256)"
+ },
+ "typeName": "int"
+ },
+ "id": 1002,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1571:17:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_int256",
+ "typeString": "int256"
+ }
+ },
+ "src": "1536:52:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_int256",
+ "typeString": "int256"
+ }
+ },
+ "id": 1004,
+ "nodeType": "ExpressionStatement",
+ "src": "1536:52:4"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1008,
+ "name": "node",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 979,
+ "src": "1605:4:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$884_memory_ptr",
+ "typeString": "struct GovernanceMock.Node memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_struct$_Node_$884_memory_ptr",
+ "typeString": "struct GovernanceMock.Node memory"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 1005,
+ "name": "nodes",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 887,
+ "src": "1594:5:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_Node_$884_storage_$dyn_storage",
+ "typeString": "struct GovernanceMock.Node storage ref[] storage ref"
+ }
+ },
+ "id": 1007,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "push",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "1594:10:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_arraypush_nonpayable$_t_struct$_Node_$884_storage_$returns$_t_uint256_$",
+ "typeString": "function (struct GovernanceMock.Node storage ref) returns (uint256)"
+ }
+ },
+ "id": 1009,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1594:16:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 1010,
+ "nodeType": "ExpressionStatement",
+ "src": "1594:16:4"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1012,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "1631:3:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1013,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "1631:10:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1014,
+ "name": "publicKey",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 946,
+ "src": "1643:9:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1015,
+ "name": "name",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 948,
+ "src": "1654:4:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1016,
+ "name": "email",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 950,
+ "src": "1660:5:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1017,
+ "name": "location",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 952,
+ "src": "1667:8:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1018,
+ "name": "url",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 954,
+ "src": "1677:3:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1019,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "1682:3:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1020,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "value",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "1682:9:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ },
+ {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ },
+ {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ },
+ {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ },
+ {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 1011,
+ "name": "Register",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 920,
+ "src": "1622:8:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint256_$returns$__$",
+ "typeString": "function (address,bytes memory,string memory,string memory,string memory,string memory,uint256)"
+ }
+ },
+ "id": 1021,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1622:70:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1022,
+ "nodeType": "EmitStatement",
+ "src": "1617:75:4"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 1024,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "register",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 955,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 946,
+ "name": "publicKey",
+ "nodeType": "VariableDeclaration",
+ "scope": 1024,
+ "src": "1090:22:4",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 945,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "1090:5:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 948,
+ "name": "name",
+ "nodeType": "VariableDeclaration",
+ "scope": 1024,
+ "src": "1118:18:4",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 947,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "1118:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 950,
+ "name": "email",
+ "nodeType": "VariableDeclaration",
+ "scope": 1024,
+ "src": "1142:19:4",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 949,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "1142:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 952,
+ "name": "location",
+ "nodeType": "VariableDeclaration",
+ "scope": 1024,
+ "src": "1167:22:4",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 951,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "1167:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 954,
+ "name": "url",
+ "nodeType": "VariableDeclaration",
+ "scope": 1024,
+ "src": "1195:17:4",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 953,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "1195:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "1084:132:4"
+ },
+ "returnParameters": {
+ "id": 956,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "1232:0:4"
+ },
+ "scope": 1259,
+ "src": "1067:630:4",
+ "stateMutability": "payable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 1061,
+ "nodeType": "Block",
+ "src": "1733:202:4",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1030,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 1027,
+ "name": "staked",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 898,
+ "src": "1739:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "+=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1028,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "1749:3:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1029,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "value",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "1749:9:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "1739:19:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 1031,
+ "nodeType": "ExpressionStatement",
+ "src": "1739:19:4"
+ },
+ {
+ "assignments": [
+ 1033
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 1033,
+ "name": "offset",
+ "nodeType": "VariableDeclaration",
+ "scope": 1061,
+ "src": "1765:14:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 1032,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1765:7:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 1040,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 1035,
+ "name": "nodesOffsetByAddress",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 891,
+ "src": "1787:20:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
+ "typeString": "mapping(address => int256)"
+ }
+ },
+ "id": 1038,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1036,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "1808:3:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1037,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "1808:10:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "1787:32:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_int256",
+ "typeString": "int256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_int256",
+ "typeString": "int256"
+ }
+ ],
+ "id": 1034,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "1782:4:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_uint256_$",
+ "typeString": "type(uint256)"
+ },
+ "typeName": "uint"
+ },
+ "id": 1039,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1782:38:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "1765:55:4"
+ },
+ {
+ "assignments": [
+ 1042
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 1042,
+ "name": "node",
+ "nodeType": "VariableDeclaration",
+ "scope": 1061,
+ "src": "1826:17:4",
+ "stateVariable": false,
+ "storageLocation": "storage",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$884_storage_ptr",
+ "typeString": "struct GovernanceMock.Node"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 1041,
+ "name": "Node",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 884,
+ "src": "1826:4:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$884_storage_ptr",
+ "typeString": "struct GovernanceMock.Node"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 1046,
+ "initialValue": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 1043,
+ "name": "nodes",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 887,
+ "src": "1846:5:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_Node_$884_storage_$dyn_storage",
+ "typeString": "struct GovernanceMock.Node storage ref[] storage ref"
+ }
+ },
+ "id": 1045,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 1044,
+ "name": "offset",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1033,
+ "src": "1852:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "1846:13:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$884_storage",
+ "typeString": "struct GovernanceMock.Node storage ref"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "1826:33:4"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1052,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1047,
+ "name": "node",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1042,
+ "src": "1865:4:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$884_storage_ptr",
+ "typeString": "struct GovernanceMock.Node storage pointer"
+ }
+ },
+ "id": 1049,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "staked",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 869,
+ "src": "1865:11:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "+=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1050,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "1880:3:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1051,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "value",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "1880:9:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "1865:24:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 1053,
+ "nodeType": "ExpressionStatement",
+ "src": "1865:24:4"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1055,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "1908:3:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1056,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "1908:10:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1057,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "1920:3:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1058,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "value",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "1920:9:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 1054,
+ "name": "Staked",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 926,
+ "src": "1901:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
+ "typeString": "function (address,uint256)"
+ }
+ },
+ "id": 1059,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1901:29:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1060,
+ "nodeType": "EmitStatement",
+ "src": "1896:34:4"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 1062,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "stake",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1025,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "1715:2:4"
+ },
+ "returnParameters": {
+ "id": 1026,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "1733:0:4"
+ },
+ "scope": 1259,
+ "src": "1701:234:4",
+ "stateMutability": "payable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 1116,
+ "nodeType": "Block",
+ "src": "1979:321:4",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1069,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 1067,
+ "name": "staked",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 898,
+ "src": "1985:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "-=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 1068,
+ "name": "amount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1064,
+ "src": "1995:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "1985:16:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 1070,
+ "nodeType": "ExpressionStatement",
+ "src": "1985:16:4"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1073,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 1071,
+ "name": "unstaked",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 901,
+ "src": "2007:8:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "+=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 1072,
+ "name": "amount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1064,
+ "src": "2019:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "2007:18:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 1074,
+ "nodeType": "ExpressionStatement",
+ "src": "2007:18:4"
+ },
+ {
+ "assignments": [
+ 1076
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 1076,
+ "name": "offset",
+ "nodeType": "VariableDeclaration",
+ "scope": 1116,
+ "src": "2032:14:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 1075,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "2032:7:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 1083,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 1078,
+ "name": "nodesOffsetByAddress",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 891,
+ "src": "2054:20:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
+ "typeString": "mapping(address => int256)"
+ }
+ },
+ "id": 1081,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1079,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "2075:3:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1080,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "2075:10:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "2054:32:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_int256",
+ "typeString": "int256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_int256",
+ "typeString": "int256"
+ }
+ ],
+ "id": 1077,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "2049:4:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_uint256_$",
+ "typeString": "type(uint256)"
+ },
+ "typeName": "uint"
+ },
+ "id": 1082,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2049:38:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "2032:55:4"
+ },
+ {
+ "assignments": [
+ 1085
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 1085,
+ "name": "node",
+ "nodeType": "VariableDeclaration",
+ "scope": 1116,
+ "src": "2093:17:4",
+ "stateVariable": false,
+ "storageLocation": "storage",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$884_storage_ptr",
+ "typeString": "struct GovernanceMock.Node"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 1084,
+ "name": "Node",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 884,
+ "src": "2093:4:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$884_storage_ptr",
+ "typeString": "struct GovernanceMock.Node"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 1089,
+ "initialValue": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 1086,
+ "name": "nodes",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 887,
+ "src": "2113:5:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_Node_$884_storage_$dyn_storage",
+ "typeString": "struct GovernanceMock.Node storage ref[] storage ref"
+ }
+ },
+ "id": 1088,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 1087,
+ "name": "offset",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1076,
+ "src": "2119:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "2113:13:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$884_storage",
+ "typeString": "struct GovernanceMock.Node storage ref"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "2093:33:4"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 1094,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 1091,
+ "name": "amount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1064,
+ "src": "2140:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "<=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1092,
+ "name": "node",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1085,
+ "src": "2150:4:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$884_storage_ptr",
+ "typeString": "struct GovernanceMock.Node storage pointer"
+ }
+ },
+ "id": 1093,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "staked",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 869,
+ "src": "2150:11:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "2140:21:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "756e7374616b6520616d6f756e74206c6172676572207468616e207374616b6564",
+ "id": 1095,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "2163:35:4",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_da56d3718f884dacb9022ed441314ea8195e22c292243dd590454035e28b7b4b",
+ "typeString": "literal_string \"unstake amount larger than staked\""
+ },
+ "value": "unstake amount larger than staked"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_da56d3718f884dacb9022ed441314ea8195e22c292243dd590454035e28b7b4b",
+ "typeString": "literal_string \"unstake amount larger than staked\""
+ }
+ ],
+ "id": 1090,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 1534,
+ 1535
+ ],
+ "referencedDeclaration": 1535,
+ "src": "2132:7:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 1096,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2132:67:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1097,
+ "nodeType": "ExpressionStatement",
+ "src": "2132:67:4"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1102,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1098,
+ "name": "node",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1085,
+ "src": "2205:4:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$884_storage_ptr",
+ "typeString": "struct GovernanceMock.Node storage pointer"
+ }
+ },
+ "id": 1100,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "staked",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 869,
+ "src": "2205:11:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "-=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 1101,
+ "name": "amount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1064,
+ "src": "2220:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "2205:21:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 1103,
+ "nodeType": "ExpressionStatement",
+ "src": "2205:21:4"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1108,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1104,
+ "name": "node",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1085,
+ "src": "2232:4:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$884_storage_ptr",
+ "typeString": "struct GovernanceMock.Node storage pointer"
+ }
+ },
+ "id": 1106,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "unstaked",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 881,
+ "src": "2232:13:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "+=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 1107,
+ "name": "amount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1064,
+ "src": "2249:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "2232:23:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 1109,
+ "nodeType": "ExpressionStatement",
+ "src": "2232:23:4"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1111,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "2276:3:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1112,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "2276:10:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1113,
+ "name": "amount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1064,
+ "src": "2288:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 1110,
+ "name": "Unstaked",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 932,
+ "src": "2267:8:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
+ "typeString": "function (address,uint256)"
+ }
+ },
+ "id": 1114,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2267:28:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1115,
+ "nodeType": "EmitStatement",
+ "src": "2262:33:4"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 1117,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "unstake",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1065,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1064,
+ "name": "amount",
+ "nodeType": "VariableDeclaration",
+ "scope": 1117,
+ "src": "1956:14:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 1063,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1956:7:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "1955:16:4"
+ },
+ "returnParameters": {
+ "id": 1066,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "1979:0:4"
+ },
+ "scope": 1259,
+ "src": "1939:361:4",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 1181,
+ "nodeType": "Block",
+ "src": "2331:376:4",
+ "statements": [
+ {
+ "assignments": [
+ 1121
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 1121,
+ "name": "offset",
+ "nodeType": "VariableDeclaration",
+ "scope": 1181,
+ "src": "2337:14:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 1120,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "2337:7:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 1128,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 1123,
+ "name": "nodesOffsetByAddress",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 891,
+ "src": "2359:20:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
+ "typeString": "mapping(address => int256)"
+ }
+ },
+ "id": 1126,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1124,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "2380:3:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1125,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "2380:10:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "2359:32:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_int256",
+ "typeString": "int256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_int256",
+ "typeString": "int256"
+ }
+ ],
+ "id": 1122,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "2354:4:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_uint256_$",
+ "typeString": "type(uint256)"
+ },
+ "typeName": "uint"
+ },
+ "id": 1127,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2354:38:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "2337:55:4"
+ },
+ {
+ "assignments": [
+ 1130
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 1130,
+ "name": "node",
+ "nodeType": "VariableDeclaration",
+ "scope": 1181,
+ "src": "2398:17:4",
+ "stateVariable": false,
+ "storageLocation": "storage",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$884_storage_ptr",
+ "typeString": "struct GovernanceMock.Node"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 1129,
+ "name": "Node",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 884,
+ "src": "2398:4:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$884_storage_ptr",
+ "typeString": "struct GovernanceMock.Node"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 1134,
+ "initialValue": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 1131,
+ "name": "nodes",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 887,
+ "src": "2418:5:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_Node_$884_storage_$dyn_storage",
+ "typeString": "struct GovernanceMock.Node storage ref[] storage ref"
+ }
+ },
+ "id": 1133,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 1132,
+ "name": "offset",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1121,
+ "src": "2424:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "2418:13:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$884_storage",
+ "typeString": "struct GovernanceMock.Node storage ref"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "2398:33:4"
+ },
+ {
+ "assignments": [
+ 1136
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 1136,
+ "name": "amount",
+ "nodeType": "VariableDeclaration",
+ "scope": 1181,
+ "src": "2437:14:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 1135,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "2437:7:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 1139,
+ "initialValue": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1137,
+ "name": "node",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1130,
+ "src": "2454:4:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$884_storage_ptr",
+ "typeString": "struct GovernanceMock.Node storage pointer"
+ }
+ },
+ "id": 1138,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "unstaked",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 881,
+ "src": "2454:13:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "2437:30:4"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 1143,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 1141,
+ "name": "amount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1136,
+ "src": "2481:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": ">=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 1142,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "2491:1:4",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "src": "2481:11:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "6e6f20756e7374616b65642062616c616e6365",
+ "id": 1144,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "2494:21:4",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_b3126609a1a445589de05c565cebb0d4ad64b5fe37801c93e070da34b6dd677f",
+ "typeString": "literal_string \"no unstaked balance\""
+ },
+ "value": "no unstaked balance"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_b3126609a1a445589de05c565cebb0d4ad64b5fe37801c93e070da34b6dd677f",
+ "typeString": "literal_string \"no unstaked balance\""
+ }
+ ],
+ "id": 1140,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 1534,
+ 1535
+ ],
+ "referencedDeclaration": 1535,
+ "src": "2473:7:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 1145,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2473:43:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1146,
+ "nodeType": "ExpressionStatement",
+ "src": "2473:43:4"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 1153,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1149,
+ "name": "this",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1557,
+ "src": "2538:4:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_GovernanceMock_$1259",
+ "typeString": "contract GovernanceMock"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_contract$_GovernanceMock_$1259",
+ "typeString": "contract GovernanceMock"
+ }
+ ],
+ "id": 1148,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "2530:7:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 1150,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2530:13:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 1151,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "balance",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "2530:21:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": ">=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 1152,
+ "name": "amount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1136,
+ "src": "2555:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "2530:31:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "696e76616c69642062616c616e6365",
+ "id": 1154,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "2563:17:4",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_35ae1f9f264101ff0420c267f3d7fc0c52f3e6953c363ae64beeee241247ccde",
+ "typeString": "literal_string \"invalid balance\""
+ },
+ "value": "invalid balance"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_35ae1f9f264101ff0420c267f3d7fc0c52f3e6953c363ae64beeee241247ccde",
+ "typeString": "literal_string \"invalid balance\""
+ }
+ ],
+ "id": 1147,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 1534,
+ 1535
+ ],
+ "referencedDeclaration": 1535,
+ "src": "2522:7:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 1155,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2522:59:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1156,
+ "nodeType": "ExpressionStatement",
+ "src": "2522:59:4"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1159,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 1157,
+ "name": "unstaked",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 901,
+ "src": "2588:8:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "-=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 1158,
+ "name": "amount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1136,
+ "src": "2600:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "2588:18:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 1160,
+ "nodeType": "ExpressionStatement",
+ "src": "2588:18:4"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1165,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1161,
+ "name": "node",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1130,
+ "src": "2612:4:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$884_storage_ptr",
+ "typeString": "struct GovernanceMock.Node storage pointer"
+ }
+ },
+ "id": 1163,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "unstaked",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 881,
+ "src": "2612:13:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 1164,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "2628:1:4",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "src": "2612:17:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 1166,
+ "nodeType": "ExpressionStatement",
+ "src": "2612:17:4"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1172,
+ "name": "amount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1136,
+ "src": "2655:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1167,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "2635:3:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1170,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "2635:10:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "id": 1171,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "transfer",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "2635:19:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$",
+ "typeString": "function (uint256)"
+ }
+ },
+ "id": 1173,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2635:27:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1174,
+ "nodeType": "ExpressionStatement",
+ "src": "2635:27:4"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1176,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "2683:3:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1177,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "2683:10:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1178,
+ "name": "amount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1136,
+ "src": "2695:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 1175,
+ "name": "Withdrawn",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 938,
+ "src": "2673:9:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
+ "typeString": "function (address,uint256)"
+ }
+ },
+ "id": 1179,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2673:29:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1180,
+ "nodeType": "EmitStatement",
+ "src": "2668:34:4"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 1182,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "withdraw",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1118,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "2321:2:4"
+ },
+ "returnParameters": {
+ "id": 1119,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "2331:0:4"
+ },
+ "scope": 1259,
+ "src": "2304:403:4",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 1218,
+ "nodeType": "Block",
+ "src": "2762:200:4",
+ "statements": [
+ {
+ "assignments": [
+ 1188
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 1188,
+ "name": "offset",
+ "nodeType": "VariableDeclaration",
+ "scope": 1218,
+ "src": "2768:14:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 1187,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "2768:7:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 1195,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 1190,
+ "name": "nodesOffsetByAddress",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 891,
+ "src": "2790:20:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
+ "typeString": "mapping(address => int256)"
+ }
+ },
+ "id": 1193,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1191,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "2811:3:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1192,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "2811:10:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "2790:32:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_int256",
+ "typeString": "int256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_int256",
+ "typeString": "int256"
+ }
+ ],
+ "id": 1189,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "2785:4:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_uint256_$",
+ "typeString": "type(uint256)"
+ },
+ "typeName": "uint"
+ },
+ "id": 1194,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2785:38:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "2768:55:4"
+ },
+ {
+ "assignments": [
+ 1197
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 1197,
+ "name": "node",
+ "nodeType": "VariableDeclaration",
+ "scope": 1218,
+ "src": "2829:17:4",
+ "stateVariable": false,
+ "storageLocation": "storage",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$884_storage_ptr",
+ "typeString": "struct GovernanceMock.Node"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 1196,
+ "name": "Node",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 884,
+ "src": "2829:4:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$884_storage_ptr",
+ "typeString": "struct GovernanceMock.Node"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 1201,
+ "initialValue": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 1198,
+ "name": "nodes",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 887,
+ "src": "2849:5:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_Node_$884_storage_$dyn_storage",
+ "typeString": "struct GovernanceMock.Node storage ref[] storage ref"
+ }
+ },
+ "id": 1200,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 1199,
+ "name": "offset",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1188,
+ "src": "2855:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "2849:13:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$884_storage",
+ "typeString": "struct GovernanceMock.Node storage ref"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "2829:33:4"
+ },
+ {
+ "assignments": [
+ 1203
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 1203,
+ "name": "amount",
+ "nodeType": "VariableDeclaration",
+ "scope": 1218,
+ "src": "2868:14:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 1202,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "2868:7:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 1206,
+ "initialValue": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1204,
+ "name": "node",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1197,
+ "src": "2885:4:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$884_storage_ptr",
+ "typeString": "struct GovernanceMock.Node storage pointer"
+ }
+ },
+ "id": 1205,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "unstaked",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 881,
+ "src": "2885:13:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "2868:30:4"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 1216,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 1209,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 1207,
+ "name": "amount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1203,
+ "src": "2911:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": ">=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 1208,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "2921:1:4",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "src": "2911:11:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "&&",
+ "rightExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 1215,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1211,
+ "name": "this",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1557,
+ "src": "2934:4:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_GovernanceMock_$1259",
+ "typeString": "contract GovernanceMock"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_contract$_GovernanceMock_$1259",
+ "typeString": "contract GovernanceMock"
+ }
+ ],
+ "id": 1210,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "2926:7:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 1212,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2926:13:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 1213,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "balance",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "2926:21:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": ">=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 1214,
+ "name": "amount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1203,
+ "src": "2951:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "2926:31:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "2911:46:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "functionReturnParameters": 1186,
+ "id": 1217,
+ "nodeType": "Return",
+ "src": "2904:53:4"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 1219,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "withdrawable",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1183,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "2732:2:4"
+ },
+ "returnParameters": {
+ "id": 1186,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1185,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 1219,
+ "src": "2756:4:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 1184,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "2756:4:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "2755:6:4"
+ },
+ "scope": 1259,
+ "src": "2711:251:4",
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 1245,
+ "nodeType": "Block",
+ "src": "3021:131:4",
+ "statements": [
+ {
+ "assignments": [
+ 1225
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 1225,
+ "name": "offset",
+ "nodeType": "VariableDeclaration",
+ "scope": 1245,
+ "src": "3027:14:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 1224,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "3027:7:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 1232,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 1227,
+ "name": "nodesOffsetByAddress",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 891,
+ "src": "3049:20:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
+ "typeString": "mapping(address => int256)"
+ }
+ },
+ "id": 1230,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1228,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "3070:3:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1229,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "3070:10:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "3049:32:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_int256",
+ "typeString": "int256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_int256",
+ "typeString": "int256"
+ }
+ ],
+ "id": 1226,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "3044:4:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_uint256_$",
+ "typeString": "type(uint256)"
+ },
+ "typeName": "uint"
+ },
+ "id": 1231,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3044:38:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "3027:55:4"
+ },
+ {
+ "assignments": [
+ 1234
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 1234,
+ "name": "node",
+ "nodeType": "VariableDeclaration",
+ "scope": 1245,
+ "src": "3088:17:4",
+ "stateVariable": false,
+ "storageLocation": "storage",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$884_storage_ptr",
+ "typeString": "struct GovernanceMock.Node"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 1233,
+ "name": "Node",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 884,
+ "src": "3088:4:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$884_storage_ptr",
+ "typeString": "struct GovernanceMock.Node"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 1238,
+ "initialValue": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 1235,
+ "name": "nodes",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 887,
+ "src": "3108:5:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_Node_$884_storage_$dyn_storage",
+ "typeString": "struct GovernanceMock.Node storage ref[] storage ref"
+ }
+ },
+ "id": 1237,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 1236,
+ "name": "offset",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1225,
+ "src": "3114:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "3108:13:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$884_storage",
+ "typeString": "struct GovernanceMock.Node storage ref"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "3088:33:4"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1243,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1239,
+ "name": "node",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1234,
+ "src": "3127:4:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$884_storage_ptr",
+ "typeString": "struct GovernanceMock.Node storage pointer"
+ }
+ },
+ "id": 1241,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "publicKey",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 867,
+ "src": "3127:14:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage",
+ "typeString": "bytes storage ref"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 1242,
+ "name": "key",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1221,
+ "src": "3144:3:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ },
+ "src": "3127:20:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage",
+ "typeString": "bytes storage ref"
+ }
+ },
+ "id": 1244,
+ "nodeType": "ExpressionStatement",
+ "src": "3127:20:4"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 1246,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "replaceNodePublicKey",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1222,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1221,
+ "name": "key",
+ "nodeType": "VariableDeclaration",
+ "scope": 1246,
+ "src": "2996:16:4",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 1220,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "2996:5:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "2995:18:4"
+ },
+ "returnParameters": {
+ "id": 1223,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "3021:0:4"
+ },
+ "scope": 1259,
+ "src": "2966:186:4",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 1257,
+ "nodeType": "Block",
+ "src": "3212:61:4",
+ "statements": [
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1252,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "3247:3:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1253,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "3247:10:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1254,
+ "name": "NewOwner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1248,
+ "src": "3259:8:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 1251,
+ "name": "NodeOwnershipTransfered",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 944,
+ "src": "3223:23:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
+ "typeString": "function (address,address)"
+ }
+ },
+ "id": 1255,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3223:45:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1256,
+ "nodeType": "EmitStatement",
+ "src": "3218:50:4"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 1258,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "transferNodeOwnership",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1249,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1248,
+ "name": "NewOwner",
+ "nodeType": "VariableDeclaration",
+ "scope": 1258,
+ "src": "3187:16:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1247,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "3187:7:4",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "3186:18:4"
+ },
+ "returnParameters": {
+ "id": 1250,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "3212:0:4"
+ },
+ "scope": 1259,
+ "src": "3156:117:4",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ }
+ ],
+ "scope": 1260,
+ "src": "187:3088:4"
+ }
+ ],
+ "src": "0:3276:4"
+ },
+ "legacyAST": {
+ "absolutePath": "/Users/aitjcize/Work/tangerine-network/node-staker/contracts/test/GovernanceMock.sol",
+ "exportedSymbols": {
+ "GovernanceMock": [
+ 1259
+ ]
+ },
+ "id": 1260,
+ "nodeType": "SourceUnit",
+ "nodes": [
+ {
+ "id": 863,
+ "literals": [
+ "solidity",
+ "^",
+ "0.5",
+ ".11"
+ ],
+ "nodeType": "PragmaDirective",
+ "src": "0:24:4"
+ },
+ {
+ "baseContracts": [],
+ "contractDependencies": [],
+ "contractKind": "contract",
+ "documentation": null,
+ "fullyImplemented": true,
+ "id": 1259,
+ "linearizedBaseContracts": [
+ 1259
+ ],
+ "name": "GovernanceMock",
+ "nodeType": "ContractDefinition",
+ "nodes": [
+ {
+ "canonicalName": "GovernanceMock.Node",
+ "id": 884,
+ "members": [
+ {
+ "constant": false,
+ "id": 865,
+ "name": "owner",
+ "nodeType": "VariableDeclaration",
+ "scope": 884,
+ "src": "234:13:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 864,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "234:7:4",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 867,
+ "name": "publicKey",
+ "nodeType": "VariableDeclaration",
+ "scope": 884,
+ "src": "253:15:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 866,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "253:5:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 869,
+ "name": "staked",
+ "nodeType": "VariableDeclaration",
+ "scope": 884,
+ "src": "274:14:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 868,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "274:7:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 871,
+ "name": "fined",
+ "nodeType": "VariableDeclaration",
+ "scope": 884,
+ "src": "294:13:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 870,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "294:7:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 873,
+ "name": "name",
+ "nodeType": "VariableDeclaration",
+ "scope": 884,
+ "src": "313:11:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 872,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "313:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 875,
+ "name": "email",
+ "nodeType": "VariableDeclaration",
+ "scope": 884,
+ "src": "330:12:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 874,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "330:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 877,
+ "name": "location",
+ "nodeType": "VariableDeclaration",
+ "scope": 884,
+ "src": "348:15:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 876,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "348:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 879,
+ "name": "url",
+ "nodeType": "VariableDeclaration",
+ "scope": 884,
+ "src": "369:10:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 878,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "369:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 881,
+ "name": "unstaked",
+ "nodeType": "VariableDeclaration",
+ "scope": 884,
+ "src": "385:16:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 880,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "385:7:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 883,
+ "name": "unstakedAt",
+ "nodeType": "VariableDeclaration",
+ "scope": 884,
+ "src": "407:18:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 882,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "407:7:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "name": "Node",
+ "nodeType": "StructDefinition",
+ "scope": 1259,
+ "src": "216:214:4",
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 887,
+ "name": "nodes",
+ "nodeType": "VariableDeclaration",
+ "scope": 1259,
+ "src": "434:19:4",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_Node_$884_storage_$dyn_storage",
+ "typeString": "struct GovernanceMock.Node[]"
+ },
+ "typeName": {
+ "baseType": {
+ "contractScope": null,
+ "id": 885,
+ "name": "Node",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 884,
+ "src": "434:4:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$884_storage_ptr",
+ "typeString": "struct GovernanceMock.Node"
+ }
+ },
+ "id": 886,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "434:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_Node_$884_storage_$dyn_storage_ptr",
+ "typeString": "struct GovernanceMock.Node[]"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 891,
+ "name": "nodesOffsetByAddress",
+ "nodeType": "VariableDeclaration",
+ "scope": 1259,
+ "src": "457:54:4",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
+ "typeString": "mapping(address => int256)"
+ },
+ "typeName": {
+ "id": 890,
+ "keyType": {
+ "id": 888,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "465:7:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Mapping",
+ "src": "457:26:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
+ "typeString": "mapping(address => int256)"
+ },
+ "valueType": {
+ "id": 889,
+ "name": "int256",
+ "nodeType": "ElementaryTypeName",
+ "src": "476:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_int256",
+ "typeString": "int256"
+ }
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 895,
+ "name": "registered",
+ "nodeType": "VariableDeclaration",
+ "scope": 1259,
+ "src": "516:42:4",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
+ "typeString": "mapping(address => bool)"
+ },
+ "typeName": {
+ "id": 894,
+ "keyType": {
+ "id": 892,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "524:7:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Mapping",
+ "src": "516:24:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
+ "typeString": "mapping(address => bool)"
+ },
+ "valueType": {
+ "id": 893,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "535:4:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 898,
+ "name": "staked",
+ "nodeType": "VariableDeclaration",
+ "scope": 1259,
+ "src": "562:25:4",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 896,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "562:7:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 897,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "586:1:4",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 901,
+ "name": "unstaked",
+ "nodeType": "VariableDeclaration",
+ "scope": 1259,
+ "src": "591:27:4",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 899,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "591:7:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 900,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "617:1:4",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 904,
+ "name": "minStake",
+ "nodeType": "VariableDeclaration",
+ "scope": 1259,
+ "src": "622:45:4",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 902,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "622:7:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": {
+ "argumentTypes": null,
+ "hexValue": "31303030303030303030303030303030303030",
+ "id": 903,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "648:19:4",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1000000000000000000_by_1",
+ "typeString": "int_const 1000000000000000000"
+ },
+ "value": "1000000000000000000"
+ },
+ "visibility": "public"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 920,
+ "name": "Register",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 919,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 906,
+ "indexed": false,
+ "name": "owner",
+ "nodeType": "VariableDeclaration",
+ "scope": 920,
+ "src": "692:13:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 905,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "692:7:4",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 908,
+ "indexed": false,
+ "name": "publicKey",
+ "nodeType": "VariableDeclaration",
+ "scope": 920,
+ "src": "711:15:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 907,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "711:5:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 910,
+ "indexed": false,
+ "name": "name",
+ "nodeType": "VariableDeclaration",
+ "scope": 920,
+ "src": "732:11:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 909,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "732:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 912,
+ "indexed": false,
+ "name": "email",
+ "nodeType": "VariableDeclaration",
+ "scope": 920,
+ "src": "749:12:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 911,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "749:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 914,
+ "indexed": false,
+ "name": "location",
+ "nodeType": "VariableDeclaration",
+ "scope": 920,
+ "src": "767:15:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 913,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "767:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 916,
+ "indexed": false,
+ "name": "url",
+ "nodeType": "VariableDeclaration",
+ "scope": 920,
+ "src": "788:10:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 915,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "788:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 918,
+ "indexed": false,
+ "name": "value",
+ "nodeType": "VariableDeclaration",
+ "scope": 920,
+ "src": "804:13:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 917,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "804:7:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "686:135:4"
+ },
+ "src": "672:150:4"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 926,
+ "name": "Staked",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 925,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 922,
+ "indexed": false,
+ "name": "owner",
+ "nodeType": "VariableDeclaration",
+ "scope": 926,
+ "src": "838:13:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 921,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "838:7:4",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 924,
+ "indexed": false,
+ "name": "amount",
+ "nodeType": "VariableDeclaration",
+ "scope": 926,
+ "src": "853:14:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 923,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "853:7:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "837:31:4"
+ },
+ "src": "825:44:4"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 932,
+ "name": "Unstaked",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 931,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 928,
+ "indexed": false,
+ "name": "owner",
+ "nodeType": "VariableDeclaration",
+ "scope": 932,
+ "src": "887:13:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 927,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "887:7:4",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 930,
+ "indexed": false,
+ "name": "amount",
+ "nodeType": "VariableDeclaration",
+ "scope": 932,
+ "src": "902:14:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 929,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "902:7:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "886:31:4"
+ },
+ "src": "872:46:4"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 938,
+ "name": "Withdrawn",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 937,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 934,
+ "indexed": false,
+ "name": "owner",
+ "nodeType": "VariableDeclaration",
+ "scope": 938,
+ "src": "937:13:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 933,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "937:7:4",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 936,
+ "indexed": false,
+ "name": "amount",
+ "nodeType": "VariableDeclaration",
+ "scope": 938,
+ "src": "952:14:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 935,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "952:7:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "936:31:4"
+ },
+ "src": "921:47:4"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 944,
+ "name": "NodeOwnershipTransfered",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 943,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 940,
+ "indexed": true,
+ "name": "NodeAddress",
+ "nodeType": "VariableDeclaration",
+ "scope": 944,
+ "src": "1001:27:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 939,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "1001:7:4",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 942,
+ "indexed": true,
+ "name": "NewOwnerAddress",
+ "nodeType": "VariableDeclaration",
+ "scope": 944,
+ "src": "1030:31:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 941,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "1030:7:4",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "1000:62:4"
+ },
+ "src": "971:92:4"
+ },
+ {
+ "body": {
+ "id": 1023,
+ "nodeType": "Block",
+ "src": "1232:465:4",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 962,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "UnaryOperation",
+ "operator": "!",
+ "prefix": true,
+ "src": "1246:23:4",
+ "subExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 958,
+ "name": "registered",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 895,
+ "src": "1247:10:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
+ "typeString": "mapping(address => bool)"
+ }
+ },
+ "id": 961,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 959,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "1258:3:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 960,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "1258:10:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "1247:22:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "73656e64657220616464726573732069732072656769737465726564",
+ "id": 963,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "1271:30:4",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_c24a0f5fdd53d2f742399d6417aa70a456bab998090535234528d61ce245c7e6",
+ "typeString": "literal_string \"sender address is registered\""
+ },
+ "value": "sender address is registered"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_c24a0f5fdd53d2f742399d6417aa70a456bab998090535234528d61ce245c7e6",
+ "typeString": "literal_string \"sender address is registered\""
+ }
+ ],
+ "id": 957,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 1534,
+ 1535
+ ],
+ "referencedDeclaration": 1535,
+ "src": "1238:7:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 964,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1238:64:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 965,
+ "nodeType": "ExpressionStatement",
+ "src": "1238:64:4"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 971,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 966,
+ "name": "registered",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 895,
+ "src": "1308:10:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
+ "typeString": "mapping(address => bool)"
+ }
+ },
+ "id": 969,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 967,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "1319:3:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 968,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "1319:10:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "1308:22:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "hexValue": "74727565",
+ "id": 970,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "bool",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "1333:4:4",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "value": "true"
+ },
+ "src": "1308:29:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "id": 972,
+ "nodeType": "ExpressionStatement",
+ "src": "1308:29:4"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 976,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 973,
+ "name": "staked",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 898,
+ "src": "1343:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "+=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 974,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "1353:3:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 975,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "value",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "1353:9:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "1343:19:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 977,
+ "nodeType": "ExpressionStatement",
+ "src": "1343:19:4"
+ },
+ {
+ "assignments": [
+ 979
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 979,
+ "name": "node",
+ "nodeType": "VariableDeclaration",
+ "scope": 1023,
+ "src": "1369:16:4",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$884_memory_ptr",
+ "typeString": "struct GovernanceMock.Node"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 978,
+ "name": "Node",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 884,
+ "src": "1369:4:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$884_storage_ptr",
+ "typeString": "struct GovernanceMock.Node"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 994,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 981,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "1400:3:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 982,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "1400:10:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 983,
+ "name": "publicKey",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 946,
+ "src": "1418:9:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 984,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "1435:3:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 985,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "value",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "1435:9:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 986,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "1452:1:4",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ {
+ "argumentTypes": null,
+ "id": 987,
+ "name": "name",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 948,
+ "src": "1461:4:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 988,
+ "name": "email",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 950,
+ "src": "1473:5:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 989,
+ "name": "location",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 952,
+ "src": "1486:8:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 990,
+ "name": "url",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 954,
+ "src": "1502:3:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 991,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "1513:1:4",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 992,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "1522:1:4",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ },
+ {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ },
+ {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ },
+ {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ },
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "id": 980,
+ "name": "Node",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 884,
+ "src": "1388:4:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_struct$_Node_$884_storage_ptr_$",
+ "typeString": "type(struct GovernanceMock.Node storage pointer)"
+ }
+ },
+ "id": 993,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "structConstructorCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1388:141:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$884_memory",
+ "typeString": "struct GovernanceMock.Node memory"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "1369:160:4"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1003,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 995,
+ "name": "nodesOffsetByAddress",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 891,
+ "src": "1536:20:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
+ "typeString": "mapping(address => int256)"
+ }
+ },
+ "id": 998,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 996,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "1557:3:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 997,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "1557:10:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "1536:32:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_int256",
+ "typeString": "int256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1000,
+ "name": "nodes",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 887,
+ "src": "1575:5:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_Node_$884_storage_$dyn_storage",
+ "typeString": "struct GovernanceMock.Node storage ref[] storage ref"
+ }
+ },
+ "id": 1001,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "1575:12:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 999,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "1571:3:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_int256_$",
+ "typeString": "type(int256)"
+ },
+ "typeName": "int"
+ },
+ "id": 1002,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1571:17:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_int256",
+ "typeString": "int256"
+ }
+ },
+ "src": "1536:52:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_int256",
+ "typeString": "int256"
+ }
+ },
+ "id": 1004,
+ "nodeType": "ExpressionStatement",
+ "src": "1536:52:4"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1008,
+ "name": "node",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 979,
+ "src": "1605:4:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$884_memory_ptr",
+ "typeString": "struct GovernanceMock.Node memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_struct$_Node_$884_memory_ptr",
+ "typeString": "struct GovernanceMock.Node memory"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 1005,
+ "name": "nodes",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 887,
+ "src": "1594:5:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_Node_$884_storage_$dyn_storage",
+ "typeString": "struct GovernanceMock.Node storage ref[] storage ref"
+ }
+ },
+ "id": 1007,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "push",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "1594:10:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_arraypush_nonpayable$_t_struct$_Node_$884_storage_$returns$_t_uint256_$",
+ "typeString": "function (struct GovernanceMock.Node storage ref) returns (uint256)"
+ }
+ },
+ "id": 1009,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1594:16:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 1010,
+ "nodeType": "ExpressionStatement",
+ "src": "1594:16:4"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1012,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "1631:3:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1013,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "1631:10:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1014,
+ "name": "publicKey",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 946,
+ "src": "1643:9:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1015,
+ "name": "name",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 948,
+ "src": "1654:4:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1016,
+ "name": "email",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 950,
+ "src": "1660:5:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1017,
+ "name": "location",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 952,
+ "src": "1667:8:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1018,
+ "name": "url",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 954,
+ "src": "1677:3:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1019,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "1682:3:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1020,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "value",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "1682:9:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ },
+ {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ },
+ {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ },
+ {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ },
+ {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 1011,
+ "name": "Register",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 920,
+ "src": "1622:8:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint256_$returns$__$",
+ "typeString": "function (address,bytes memory,string memory,string memory,string memory,string memory,uint256)"
+ }
+ },
+ "id": 1021,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1622:70:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1022,
+ "nodeType": "EmitStatement",
+ "src": "1617:75:4"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 1024,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "register",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 955,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 946,
+ "name": "publicKey",
+ "nodeType": "VariableDeclaration",
+ "scope": 1024,
+ "src": "1090:22:4",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 945,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "1090:5:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 948,
+ "name": "name",
+ "nodeType": "VariableDeclaration",
+ "scope": 1024,
+ "src": "1118:18:4",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 947,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "1118:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 950,
+ "name": "email",
+ "nodeType": "VariableDeclaration",
+ "scope": 1024,
+ "src": "1142:19:4",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 949,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "1142:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 952,
+ "name": "location",
+ "nodeType": "VariableDeclaration",
+ "scope": 1024,
+ "src": "1167:22:4",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 951,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "1167:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 954,
+ "name": "url",
+ "nodeType": "VariableDeclaration",
+ "scope": 1024,
+ "src": "1195:17:4",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 953,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "1195:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "1084:132:4"
+ },
+ "returnParameters": {
+ "id": 956,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "1232:0:4"
+ },
+ "scope": 1259,
+ "src": "1067:630:4",
+ "stateMutability": "payable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 1061,
+ "nodeType": "Block",
+ "src": "1733:202:4",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1030,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 1027,
+ "name": "staked",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 898,
+ "src": "1739:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "+=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1028,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "1749:3:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1029,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "value",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "1749:9:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "1739:19:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 1031,
+ "nodeType": "ExpressionStatement",
+ "src": "1739:19:4"
+ },
+ {
+ "assignments": [
+ 1033
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 1033,
+ "name": "offset",
+ "nodeType": "VariableDeclaration",
+ "scope": 1061,
+ "src": "1765:14:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 1032,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1765:7:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 1040,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 1035,
+ "name": "nodesOffsetByAddress",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 891,
+ "src": "1787:20:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
+ "typeString": "mapping(address => int256)"
+ }
+ },
+ "id": 1038,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1036,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "1808:3:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1037,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "1808:10:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "1787:32:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_int256",
+ "typeString": "int256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_int256",
+ "typeString": "int256"
+ }
+ ],
+ "id": 1034,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "1782:4:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_uint256_$",
+ "typeString": "type(uint256)"
+ },
+ "typeName": "uint"
+ },
+ "id": 1039,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1782:38:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "1765:55:4"
+ },
+ {
+ "assignments": [
+ 1042
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 1042,
+ "name": "node",
+ "nodeType": "VariableDeclaration",
+ "scope": 1061,
+ "src": "1826:17:4",
+ "stateVariable": false,
+ "storageLocation": "storage",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$884_storage_ptr",
+ "typeString": "struct GovernanceMock.Node"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 1041,
+ "name": "Node",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 884,
+ "src": "1826:4:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$884_storage_ptr",
+ "typeString": "struct GovernanceMock.Node"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 1046,
+ "initialValue": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 1043,
+ "name": "nodes",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 887,
+ "src": "1846:5:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_Node_$884_storage_$dyn_storage",
+ "typeString": "struct GovernanceMock.Node storage ref[] storage ref"
+ }
+ },
+ "id": 1045,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 1044,
+ "name": "offset",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1033,
+ "src": "1852:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "1846:13:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$884_storage",
+ "typeString": "struct GovernanceMock.Node storage ref"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "1826:33:4"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1052,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1047,
+ "name": "node",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1042,
+ "src": "1865:4:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$884_storage_ptr",
+ "typeString": "struct GovernanceMock.Node storage pointer"
+ }
+ },
+ "id": 1049,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "staked",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 869,
+ "src": "1865:11:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "+=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1050,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "1880:3:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1051,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "value",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "1880:9:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "1865:24:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 1053,
+ "nodeType": "ExpressionStatement",
+ "src": "1865:24:4"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1055,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "1908:3:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1056,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "1908:10:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1057,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "1920:3:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1058,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "value",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "1920:9:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 1054,
+ "name": "Staked",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 926,
+ "src": "1901:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
+ "typeString": "function (address,uint256)"
+ }
+ },
+ "id": 1059,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1901:29:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1060,
+ "nodeType": "EmitStatement",
+ "src": "1896:34:4"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 1062,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "stake",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1025,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "1715:2:4"
+ },
+ "returnParameters": {
+ "id": 1026,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "1733:0:4"
+ },
+ "scope": 1259,
+ "src": "1701:234:4",
+ "stateMutability": "payable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 1116,
+ "nodeType": "Block",
+ "src": "1979:321:4",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1069,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 1067,
+ "name": "staked",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 898,
+ "src": "1985:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "-=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 1068,
+ "name": "amount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1064,
+ "src": "1995:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "1985:16:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 1070,
+ "nodeType": "ExpressionStatement",
+ "src": "1985:16:4"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1073,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 1071,
+ "name": "unstaked",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 901,
+ "src": "2007:8:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "+=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 1072,
+ "name": "amount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1064,
+ "src": "2019:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "2007:18:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 1074,
+ "nodeType": "ExpressionStatement",
+ "src": "2007:18:4"
+ },
+ {
+ "assignments": [
+ 1076
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 1076,
+ "name": "offset",
+ "nodeType": "VariableDeclaration",
+ "scope": 1116,
+ "src": "2032:14:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 1075,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "2032:7:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 1083,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 1078,
+ "name": "nodesOffsetByAddress",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 891,
+ "src": "2054:20:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
+ "typeString": "mapping(address => int256)"
+ }
+ },
+ "id": 1081,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1079,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "2075:3:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1080,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "2075:10:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "2054:32:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_int256",
+ "typeString": "int256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_int256",
+ "typeString": "int256"
+ }
+ ],
+ "id": 1077,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "2049:4:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_uint256_$",
+ "typeString": "type(uint256)"
+ },
+ "typeName": "uint"
+ },
+ "id": 1082,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2049:38:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "2032:55:4"
+ },
+ {
+ "assignments": [
+ 1085
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 1085,
+ "name": "node",
+ "nodeType": "VariableDeclaration",
+ "scope": 1116,
+ "src": "2093:17:4",
+ "stateVariable": false,
+ "storageLocation": "storage",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$884_storage_ptr",
+ "typeString": "struct GovernanceMock.Node"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 1084,
+ "name": "Node",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 884,
+ "src": "2093:4:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$884_storage_ptr",
+ "typeString": "struct GovernanceMock.Node"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 1089,
+ "initialValue": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 1086,
+ "name": "nodes",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 887,
+ "src": "2113:5:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_Node_$884_storage_$dyn_storage",
+ "typeString": "struct GovernanceMock.Node storage ref[] storage ref"
+ }
+ },
+ "id": 1088,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 1087,
+ "name": "offset",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1076,
+ "src": "2119:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "2113:13:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$884_storage",
+ "typeString": "struct GovernanceMock.Node storage ref"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "2093:33:4"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 1094,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 1091,
+ "name": "amount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1064,
+ "src": "2140:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "<=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1092,
+ "name": "node",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1085,
+ "src": "2150:4:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$884_storage_ptr",
+ "typeString": "struct GovernanceMock.Node storage pointer"
+ }
+ },
+ "id": 1093,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "staked",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 869,
+ "src": "2150:11:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "2140:21:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "756e7374616b6520616d6f756e74206c6172676572207468616e207374616b6564",
+ "id": 1095,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "2163:35:4",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_da56d3718f884dacb9022ed441314ea8195e22c292243dd590454035e28b7b4b",
+ "typeString": "literal_string \"unstake amount larger than staked\""
+ },
+ "value": "unstake amount larger than staked"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_da56d3718f884dacb9022ed441314ea8195e22c292243dd590454035e28b7b4b",
+ "typeString": "literal_string \"unstake amount larger than staked\""
+ }
+ ],
+ "id": 1090,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 1534,
+ 1535
+ ],
+ "referencedDeclaration": 1535,
+ "src": "2132:7:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 1096,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2132:67:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1097,
+ "nodeType": "ExpressionStatement",
+ "src": "2132:67:4"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1102,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1098,
+ "name": "node",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1085,
+ "src": "2205:4:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$884_storage_ptr",
+ "typeString": "struct GovernanceMock.Node storage pointer"
+ }
+ },
+ "id": 1100,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "staked",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 869,
+ "src": "2205:11:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "-=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 1101,
+ "name": "amount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1064,
+ "src": "2220:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "2205:21:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 1103,
+ "nodeType": "ExpressionStatement",
+ "src": "2205:21:4"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1108,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1104,
+ "name": "node",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1085,
+ "src": "2232:4:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$884_storage_ptr",
+ "typeString": "struct GovernanceMock.Node storage pointer"
+ }
+ },
+ "id": 1106,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "unstaked",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 881,
+ "src": "2232:13:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "+=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 1107,
+ "name": "amount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1064,
+ "src": "2249:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "2232:23:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 1109,
+ "nodeType": "ExpressionStatement",
+ "src": "2232:23:4"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1111,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "2276:3:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1112,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "2276:10:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1113,
+ "name": "amount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1064,
+ "src": "2288:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 1110,
+ "name": "Unstaked",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 932,
+ "src": "2267:8:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
+ "typeString": "function (address,uint256)"
+ }
+ },
+ "id": 1114,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2267:28:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1115,
+ "nodeType": "EmitStatement",
+ "src": "2262:33:4"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 1117,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "unstake",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1065,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1064,
+ "name": "amount",
+ "nodeType": "VariableDeclaration",
+ "scope": 1117,
+ "src": "1956:14:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 1063,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1956:7:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "1955:16:4"
+ },
+ "returnParameters": {
+ "id": 1066,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "1979:0:4"
+ },
+ "scope": 1259,
+ "src": "1939:361:4",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 1181,
+ "nodeType": "Block",
+ "src": "2331:376:4",
+ "statements": [
+ {
+ "assignments": [
+ 1121
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 1121,
+ "name": "offset",
+ "nodeType": "VariableDeclaration",
+ "scope": 1181,
+ "src": "2337:14:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 1120,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "2337:7:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 1128,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 1123,
+ "name": "nodesOffsetByAddress",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 891,
+ "src": "2359:20:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
+ "typeString": "mapping(address => int256)"
+ }
+ },
+ "id": 1126,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1124,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "2380:3:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1125,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "2380:10:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "2359:32:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_int256",
+ "typeString": "int256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_int256",
+ "typeString": "int256"
+ }
+ ],
+ "id": 1122,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "2354:4:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_uint256_$",
+ "typeString": "type(uint256)"
+ },
+ "typeName": "uint"
+ },
+ "id": 1127,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2354:38:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "2337:55:4"
+ },
+ {
+ "assignments": [
+ 1130
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 1130,
+ "name": "node",
+ "nodeType": "VariableDeclaration",
+ "scope": 1181,
+ "src": "2398:17:4",
+ "stateVariable": false,
+ "storageLocation": "storage",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$884_storage_ptr",
+ "typeString": "struct GovernanceMock.Node"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 1129,
+ "name": "Node",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 884,
+ "src": "2398:4:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$884_storage_ptr",
+ "typeString": "struct GovernanceMock.Node"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 1134,
+ "initialValue": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 1131,
+ "name": "nodes",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 887,
+ "src": "2418:5:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_Node_$884_storage_$dyn_storage",
+ "typeString": "struct GovernanceMock.Node storage ref[] storage ref"
+ }
+ },
+ "id": 1133,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 1132,
+ "name": "offset",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1121,
+ "src": "2424:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "2418:13:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$884_storage",
+ "typeString": "struct GovernanceMock.Node storage ref"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "2398:33:4"
+ },
+ {
+ "assignments": [
+ 1136
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 1136,
+ "name": "amount",
+ "nodeType": "VariableDeclaration",
+ "scope": 1181,
+ "src": "2437:14:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 1135,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "2437:7:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 1139,
+ "initialValue": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1137,
+ "name": "node",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1130,
+ "src": "2454:4:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$884_storage_ptr",
+ "typeString": "struct GovernanceMock.Node storage pointer"
+ }
+ },
+ "id": 1138,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "unstaked",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 881,
+ "src": "2454:13:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "2437:30:4"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 1143,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 1141,
+ "name": "amount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1136,
+ "src": "2481:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": ">=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 1142,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "2491:1:4",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "src": "2481:11:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "6e6f20756e7374616b65642062616c616e6365",
+ "id": 1144,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "2494:21:4",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_b3126609a1a445589de05c565cebb0d4ad64b5fe37801c93e070da34b6dd677f",
+ "typeString": "literal_string \"no unstaked balance\""
+ },
+ "value": "no unstaked balance"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_b3126609a1a445589de05c565cebb0d4ad64b5fe37801c93e070da34b6dd677f",
+ "typeString": "literal_string \"no unstaked balance\""
+ }
+ ],
+ "id": 1140,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 1534,
+ 1535
+ ],
+ "referencedDeclaration": 1535,
+ "src": "2473:7:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 1145,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2473:43:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1146,
+ "nodeType": "ExpressionStatement",
+ "src": "2473:43:4"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 1153,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1149,
+ "name": "this",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1557,
+ "src": "2538:4:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_GovernanceMock_$1259",
+ "typeString": "contract GovernanceMock"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_contract$_GovernanceMock_$1259",
+ "typeString": "contract GovernanceMock"
+ }
+ ],
+ "id": 1148,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "2530:7:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 1150,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2530:13:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 1151,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "balance",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "2530:21:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": ">=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 1152,
+ "name": "amount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1136,
+ "src": "2555:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "2530:31:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "696e76616c69642062616c616e6365",
+ "id": 1154,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "2563:17:4",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_35ae1f9f264101ff0420c267f3d7fc0c52f3e6953c363ae64beeee241247ccde",
+ "typeString": "literal_string \"invalid balance\""
+ },
+ "value": "invalid balance"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_35ae1f9f264101ff0420c267f3d7fc0c52f3e6953c363ae64beeee241247ccde",
+ "typeString": "literal_string \"invalid balance\""
+ }
+ ],
+ "id": 1147,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 1534,
+ 1535
+ ],
+ "referencedDeclaration": 1535,
+ "src": "2522:7:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 1155,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2522:59:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1156,
+ "nodeType": "ExpressionStatement",
+ "src": "2522:59:4"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1159,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 1157,
+ "name": "unstaked",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 901,
+ "src": "2588:8:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "-=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 1158,
+ "name": "amount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1136,
+ "src": "2600:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "2588:18:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 1160,
+ "nodeType": "ExpressionStatement",
+ "src": "2588:18:4"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1165,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1161,
+ "name": "node",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1130,
+ "src": "2612:4:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$884_storage_ptr",
+ "typeString": "struct GovernanceMock.Node storage pointer"
+ }
+ },
+ "id": 1163,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "unstaked",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 881,
+ "src": "2612:13:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 1164,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "2628:1:4",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "src": "2612:17:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 1166,
+ "nodeType": "ExpressionStatement",
+ "src": "2612:17:4"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1172,
+ "name": "amount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1136,
+ "src": "2655:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1167,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "2635:3:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1170,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "2635:10:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "id": 1171,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "transfer",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "2635:19:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$",
+ "typeString": "function (uint256)"
+ }
+ },
+ "id": 1173,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2635:27:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1174,
+ "nodeType": "ExpressionStatement",
+ "src": "2635:27:4"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1176,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "2683:3:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1177,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "2683:10:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1178,
+ "name": "amount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1136,
+ "src": "2695:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 1175,
+ "name": "Withdrawn",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 938,
+ "src": "2673:9:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
+ "typeString": "function (address,uint256)"
+ }
+ },
+ "id": 1179,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2673:29:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1180,
+ "nodeType": "EmitStatement",
+ "src": "2668:34:4"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 1182,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "withdraw",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1118,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "2321:2:4"
+ },
+ "returnParameters": {
+ "id": 1119,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "2331:0:4"
+ },
+ "scope": 1259,
+ "src": "2304:403:4",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 1218,
+ "nodeType": "Block",
+ "src": "2762:200:4",
+ "statements": [
+ {
+ "assignments": [
+ 1188
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 1188,
+ "name": "offset",
+ "nodeType": "VariableDeclaration",
+ "scope": 1218,
+ "src": "2768:14:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 1187,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "2768:7:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 1195,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 1190,
+ "name": "nodesOffsetByAddress",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 891,
+ "src": "2790:20:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
+ "typeString": "mapping(address => int256)"
+ }
+ },
+ "id": 1193,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1191,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "2811:3:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1192,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "2811:10:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "2790:32:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_int256",
+ "typeString": "int256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_int256",
+ "typeString": "int256"
+ }
+ ],
+ "id": 1189,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "2785:4:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_uint256_$",
+ "typeString": "type(uint256)"
+ },
+ "typeName": "uint"
+ },
+ "id": 1194,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2785:38:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "2768:55:4"
+ },
+ {
+ "assignments": [
+ 1197
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 1197,
+ "name": "node",
+ "nodeType": "VariableDeclaration",
+ "scope": 1218,
+ "src": "2829:17:4",
+ "stateVariable": false,
+ "storageLocation": "storage",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$884_storage_ptr",
+ "typeString": "struct GovernanceMock.Node"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 1196,
+ "name": "Node",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 884,
+ "src": "2829:4:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$884_storage_ptr",
+ "typeString": "struct GovernanceMock.Node"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 1201,
+ "initialValue": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 1198,
+ "name": "nodes",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 887,
+ "src": "2849:5:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_Node_$884_storage_$dyn_storage",
+ "typeString": "struct GovernanceMock.Node storage ref[] storage ref"
+ }
+ },
+ "id": 1200,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 1199,
+ "name": "offset",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1188,
+ "src": "2855:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "2849:13:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$884_storage",
+ "typeString": "struct GovernanceMock.Node storage ref"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "2829:33:4"
+ },
+ {
+ "assignments": [
+ 1203
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 1203,
+ "name": "amount",
+ "nodeType": "VariableDeclaration",
+ "scope": 1218,
+ "src": "2868:14:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 1202,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "2868:7:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 1206,
+ "initialValue": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1204,
+ "name": "node",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1197,
+ "src": "2885:4:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$884_storage_ptr",
+ "typeString": "struct GovernanceMock.Node storage pointer"
+ }
+ },
+ "id": 1205,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "unstaked",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 881,
+ "src": "2885:13:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "2868:30:4"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 1216,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 1209,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 1207,
+ "name": "amount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1203,
+ "src": "2911:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": ">=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 1208,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "2921:1:4",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "src": "2911:11:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "&&",
+ "rightExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 1215,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1211,
+ "name": "this",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1557,
+ "src": "2934:4:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_GovernanceMock_$1259",
+ "typeString": "contract GovernanceMock"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_contract$_GovernanceMock_$1259",
+ "typeString": "contract GovernanceMock"
+ }
+ ],
+ "id": 1210,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "2926:7:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 1212,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2926:13:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 1213,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "balance",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "2926:21:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": ">=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 1214,
+ "name": "amount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1203,
+ "src": "2951:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "2926:31:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "2911:46:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "functionReturnParameters": 1186,
+ "id": 1217,
+ "nodeType": "Return",
+ "src": "2904:53:4"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 1219,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "withdrawable",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1183,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "2732:2:4"
+ },
+ "returnParameters": {
+ "id": 1186,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1185,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 1219,
+ "src": "2756:4:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 1184,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "2756:4:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "2755:6:4"
+ },
+ "scope": 1259,
+ "src": "2711:251:4",
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 1245,
+ "nodeType": "Block",
+ "src": "3021:131:4",
+ "statements": [
+ {
+ "assignments": [
+ 1225
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 1225,
+ "name": "offset",
+ "nodeType": "VariableDeclaration",
+ "scope": 1245,
+ "src": "3027:14:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 1224,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "3027:7:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 1232,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 1227,
+ "name": "nodesOffsetByAddress",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 891,
+ "src": "3049:20:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
+ "typeString": "mapping(address => int256)"
+ }
+ },
+ "id": 1230,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1228,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "3070:3:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1229,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "3070:10:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "3049:32:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_int256",
+ "typeString": "int256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_int256",
+ "typeString": "int256"
+ }
+ ],
+ "id": 1226,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "3044:4:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_uint256_$",
+ "typeString": "type(uint256)"
+ },
+ "typeName": "uint"
+ },
+ "id": 1231,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3044:38:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "3027:55:4"
+ },
+ {
+ "assignments": [
+ 1234
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 1234,
+ "name": "node",
+ "nodeType": "VariableDeclaration",
+ "scope": 1245,
+ "src": "3088:17:4",
+ "stateVariable": false,
+ "storageLocation": "storage",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$884_storage_ptr",
+ "typeString": "struct GovernanceMock.Node"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 1233,
+ "name": "Node",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 884,
+ "src": "3088:4:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$884_storage_ptr",
+ "typeString": "struct GovernanceMock.Node"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 1238,
+ "initialValue": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 1235,
+ "name": "nodes",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 887,
+ "src": "3108:5:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_Node_$884_storage_$dyn_storage",
+ "typeString": "struct GovernanceMock.Node storage ref[] storage ref"
+ }
+ },
+ "id": 1237,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 1236,
+ "name": "offset",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1225,
+ "src": "3114:6:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "3108:13:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$884_storage",
+ "typeString": "struct GovernanceMock.Node storage ref"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "3088:33:4"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1243,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1239,
+ "name": "node",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1234,
+ "src": "3127:4:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Node_$884_storage_ptr",
+ "typeString": "struct GovernanceMock.Node storage pointer"
+ }
+ },
+ "id": 1241,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "publicKey",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 867,
+ "src": "3127:14:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage",
+ "typeString": "bytes storage ref"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 1242,
+ "name": "key",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1221,
+ "src": "3144:3:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ },
+ "src": "3127:20:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage",
+ "typeString": "bytes storage ref"
+ }
+ },
+ "id": 1244,
+ "nodeType": "ExpressionStatement",
+ "src": "3127:20:4"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 1246,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "replaceNodePublicKey",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1222,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1221,
+ "name": "key",
+ "nodeType": "VariableDeclaration",
+ "scope": 1246,
+ "src": "2996:16:4",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 1220,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "2996:5:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "2995:18:4"
+ },
+ "returnParameters": {
+ "id": 1223,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "3021:0:4"
+ },
+ "scope": 1259,
+ "src": "2966:186:4",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 1257,
+ "nodeType": "Block",
+ "src": "3212:61:4",
+ "statements": [
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1252,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "3247:3:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1253,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "3247:10:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1254,
+ "name": "NewOwner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1248,
+ "src": "3259:8:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 1251,
+ "name": "NodeOwnershipTransfered",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 944,
+ "src": "3223:23:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
+ "typeString": "function (address,address)"
+ }
+ },
+ "id": 1255,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3223:45:4",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1256,
+ "nodeType": "EmitStatement",
+ "src": "3218:50:4"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 1258,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "transferNodeOwnership",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1249,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1248,
+ "name": "NewOwner",
+ "nodeType": "VariableDeclaration",
+ "scope": 1258,
+ "src": "3187:16:4",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1247,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "3187:7:4",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "3186:18:4"
+ },
+ "returnParameters": {
+ "id": 1250,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "3212:0:4"
+ },
+ "scope": 1259,
+ "src": "3156:117:4",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ }
+ ],
+ "scope": 1260,
+ "src": "187:3088:4"
+ }
+ ],
+ "src": "0:3276:4"
+ },
+ "compiler": {
+ "name": "solc",
+ "version": "0.5.11+commit.c082d0b4.Emscripten.clang"
+ },
+ "networks": {},
+ "schemaVersion": "3.0.11",
+ "updatedAt": "2019-09-29T03:09:06.443Z",
+ "devdoc": {
+ "methods": {}
+ },
+ "userdoc": {
+ "methods": {}
+ }
+} \ No newline at end of file
diff --git a/build/contracts/Migrations.json b/build/contracts/Migrations.json
new file mode 100644
index 0000000..4a0e728
--- /dev/null
+++ b/build/contracts/Migrations.json
@@ -0,0 +1,1396 @@
+{
+ "contractName": "Migrations",
+ "abi": [
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "last_completed_migration",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "owner",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "constructor"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "completed",
+ "type": "uint256"
+ }
+ ],
+ "name": "setCompleted",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "new_address",
+ "type": "address"
+ }
+ ],
+ "name": "upgrade",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ }
+ ],
+ "metadata": "{\"compiler\":{\"version\":\"0.5.11+commit.c082d0b4\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"new_address\",\"type\":\"address\"}],\"name\":\"upgrade\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"last_completed_migration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"completed\",\"type\":\"uint256\"}],\"name\":\"setCompleted\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/Users/aitjcize/Work/tangerine-network/node-staker/contracts/Migrations.sol\":\"Migrations\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/aitjcize/Work/tangerine-network/node-staker/contracts/Migrations.sol\":{\"keccak256\":\"0xdf42c09ce9adb5888e190bffec1f5ed46efb313314af6b45463fc66493458eda\",\"urls\":[\"bzz-raw://05071f01b13c08b1890a892fe0d2f96e3119eec5e43165e4b4f4f02ae638e7d3\",\"dweb:/ipfs/QmSao6xWUPajiMFgXCe7tpPCaGsrqJG7ydjmKqn1yGhEkj\"]}},\"version\":1}",
+ "bytecode": "0x608060405234801561001057600080fd5b50600080546001600160a01b031916331790556101b3806100326000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80630900f01014610051578063445df0ac146100795780638da5cb5b14610093578063fdacd576146100b7575b600080fd5b6100776004803603602081101561006757600080fd5b50356001600160a01b03166100d4565b005b610081610151565b60408051918252519081900360200190f35b61009b610157565b604080516001600160a01b039092168252519081900360200190f35b610077600480360360208110156100cd57600080fd5b5035610166565b6000546001600160a01b031633141561014e576000819050806001600160a01b031663fdacd5766001546040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561013457600080fd5b505af1158015610148573d6000803e3d6000fd5b50505050505b50565b60015481565b6000546001600160a01b031681565b6000546001600160a01b031633141561014e5760015556fea265627a7a72315820b5027af3e4971bb75bb6b4b729e24e7f04610fd5f51b4bcb7297c2da2f8d26ab64736f6c634300050b0032",
+ "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c80630900f01014610051578063445df0ac146100795780638da5cb5b14610093578063fdacd576146100b7575b600080fd5b6100776004803603602081101561006757600080fd5b50356001600160a01b03166100d4565b005b610081610151565b60408051918252519081900360200190f35b61009b610157565b604080516001600160a01b039092168252519081900360200190f35b610077600480360360208110156100cd57600080fd5b5035610166565b6000546001600160a01b031633141561014e576000819050806001600160a01b031663fdacd5766001546040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561013457600080fd5b505af1158015610148573d6000803e3d6000fd5b50505050505b50565b60015481565b6000546001600160a01b031681565b6000546001600160a01b031633141561014e5760015556fea265627a7a72315820b5027af3e4971bb75bb6b4b729e24e7f04610fd5f51b4bcb7297c2da2f8d26ab64736f6c634300050b0032",
+ "sourceMap": "34:480:2:-;;;123:50;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;150:5:2;:18;;-1:-1:-1;;;;;;150:18:2;158:10;150:18;;;34:480;;;;;;",
+ "deployedSourceMap": "34:480:2:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;34:480:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;347:165;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;347:165:2;-1:-1:-1;;;;;347:165:2;;:::i;:::-;;82:36;;;:::i;:::-;;;;;;;;;;;;;;;;58:20;;;:::i;:::-;;;;-1:-1:-1;;;;;58:20:2;;;;;;;;;;;;;;240:103;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;240:103:2;;:::i;347:165::-;223:5;;-1:-1:-1;;;;;223:5:2;209:10;:19;205:26;;;409:19;442:11;409:45;;460:8;-1:-1:-1;;;;;460:21:2;;482:24;;460:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;460:47:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;460:47:2;;;;230:1;205:26;347:165;:::o;82:36::-;;;;:::o;58:20::-;;;-1:-1:-1;;;;;58:20:2;;:::o;240:103::-;223:5;;-1:-1:-1;;;;;223:5:2;209:10;:19;205:26;;;302:24;:36;240:103::o",
+ "source": "pragma solidity >=0.4.21 <0.6.0;\n\ncontract Migrations {\n address public owner;\n uint public last_completed_migration;\n\n constructor() public {\n owner = msg.sender;\n }\n\n modifier restricted() {\n if (msg.sender == owner) _;\n }\n\n function setCompleted(uint completed) public restricted {\n last_completed_migration = completed;\n }\n\n function upgrade(address new_address) public restricted {\n Migrations upgraded = Migrations(new_address);\n upgraded.setCompleted(last_completed_migration);\n }\n}\n\n",
+ "sourcePath": "/Users/aitjcize/Work/tangerine-network/node-staker/contracts/Migrations.sol",
+ "ast": {
+ "absolutePath": "/Users/aitjcize/Work/tangerine-network/node-staker/contracts/Migrations.sol",
+ "exportedSymbols": {
+ "Migrations": [
+ 487
+ ]
+ },
+ "id": 488,
+ "nodeType": "SourceUnit",
+ "nodes": [
+ {
+ "id": 432,
+ "literals": [
+ "solidity",
+ ">=",
+ "0.4",
+ ".21",
+ "<",
+ "0.6",
+ ".0"
+ ],
+ "nodeType": "PragmaDirective",
+ "src": "0:32:2"
+ },
+ {
+ "baseContracts": [],
+ "contractDependencies": [],
+ "contractKind": "contract",
+ "documentation": null,
+ "fullyImplemented": true,
+ "id": 487,
+ "linearizedBaseContracts": [
+ 487
+ ],
+ "name": "Migrations",
+ "nodeType": "ContractDefinition",
+ "nodes": [
+ {
+ "constant": false,
+ "id": 434,
+ "name": "owner",
+ "nodeType": "VariableDeclaration",
+ "scope": 487,
+ "src": "58:20:2",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 433,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "58:7:2",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 436,
+ "name": "last_completed_migration",
+ "nodeType": "VariableDeclaration",
+ "scope": 487,
+ "src": "82:36:2",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 435,
+ "name": "uint",
+ "nodeType": "ElementaryTypeName",
+ "src": "82:4:2",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 444,
+ "nodeType": "Block",
+ "src": "144:29:2",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 442,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 439,
+ "name": "owner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 434,
+ "src": "150:5:2",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 440,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "158:3:2",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 441,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "158:10:2",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "src": "150:18:2",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 443,
+ "nodeType": "ExpressionStatement",
+ "src": "150:18:2"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 445,
+ "implemented": true,
+ "kind": "constructor",
+ "modifiers": [],
+ "name": "",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 437,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "134:2:2"
+ },
+ "returnParameters": {
+ "id": 438,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "144:0:2"
+ },
+ "scope": 487,
+ "src": "123:50:2",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 453,
+ "nodeType": "Block",
+ "src": "199:37:2",
+ "statements": [
+ {
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 450,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 447,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "209:3:2",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 448,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "209:10:2",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 449,
+ "name": "owner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 434,
+ "src": "223:5:2",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "209:19:2",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": null,
+ "id": 452,
+ "nodeType": "IfStatement",
+ "src": "205:26:2",
+ "trueBody": {
+ "id": 451,
+ "nodeType": "PlaceholderStatement",
+ "src": "230:1:2"
+ }
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 454,
+ "name": "restricted",
+ "nodeType": "ModifierDefinition",
+ "parameters": {
+ "id": 446,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "196:2:2"
+ },
+ "src": "177:59:2",
+ "visibility": "internal"
+ },
+ {
+ "body": {
+ "id": 465,
+ "nodeType": "Block",
+ "src": "296:47:2",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 463,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 461,
+ "name": "last_completed_migration",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 436,
+ "src": "302:24:2",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 462,
+ "name": "completed",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 456,
+ "src": "329:9:2",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "302:36:2",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 464,
+ "nodeType": "ExpressionStatement",
+ "src": "302:36:2"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 466,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 459,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 458,
+ "name": "restricted",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 454,
+ "src": "285:10:2",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "285:10:2"
+ }
+ ],
+ "name": "setCompleted",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 457,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 456,
+ "name": "completed",
+ "nodeType": "VariableDeclaration",
+ "scope": 466,
+ "src": "262:14:2",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 455,
+ "name": "uint",
+ "nodeType": "ElementaryTypeName",
+ "src": "262:4:2",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "261:16:2"
+ },
+ "returnParameters": {
+ "id": 460,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "296:0:2"
+ },
+ "scope": 487,
+ "src": "240:103:2",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 485,
+ "nodeType": "Block",
+ "src": "403:109:2",
+ "statements": [
+ {
+ "assignments": [
+ 474
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 474,
+ "name": "upgraded",
+ "nodeType": "VariableDeclaration",
+ "scope": 485,
+ "src": "409:19:2",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Migrations_$487",
+ "typeString": "contract Migrations"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 473,
+ "name": "Migrations",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 487,
+ "src": "409:10:2",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Migrations_$487",
+ "typeString": "contract Migrations"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 478,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 476,
+ "name": "new_address",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 468,
+ "src": "442:11:2",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 475,
+ "name": "Migrations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 487,
+ "src": "431:10:2",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_contract$_Migrations_$487_$",
+ "typeString": "type(contract Migrations)"
+ }
+ },
+ "id": 477,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "431:23:2",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Migrations_$487",
+ "typeString": "contract Migrations"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "409:45:2"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 482,
+ "name": "last_completed_migration",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 436,
+ "src": "482:24:2",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 479,
+ "name": "upgraded",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 474,
+ "src": "460:8:2",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Migrations_$487",
+ "typeString": "contract Migrations"
+ }
+ },
+ "id": 481,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "setCompleted",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 466,
+ "src": "460:21:2",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
+ "typeString": "function (uint256) external"
+ }
+ },
+ "id": 483,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "460:47:2",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 484,
+ "nodeType": "ExpressionStatement",
+ "src": "460:47:2"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 486,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 471,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 470,
+ "name": "restricted",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 454,
+ "src": "392:10:2",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "392:10:2"
+ }
+ ],
+ "name": "upgrade",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 469,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 468,
+ "name": "new_address",
+ "nodeType": "VariableDeclaration",
+ "scope": 486,
+ "src": "364:19:2",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 467,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "364:7:2",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "363:21:2"
+ },
+ "returnParameters": {
+ "id": 472,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "403:0:2"
+ },
+ "scope": 487,
+ "src": "347:165:2",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ }
+ ],
+ "scope": 488,
+ "src": "34:480:2"
+ }
+ ],
+ "src": "0:516:2"
+ },
+ "legacyAST": {
+ "absolutePath": "/Users/aitjcize/Work/tangerine-network/node-staker/contracts/Migrations.sol",
+ "exportedSymbols": {
+ "Migrations": [
+ 487
+ ]
+ },
+ "id": 488,
+ "nodeType": "SourceUnit",
+ "nodes": [
+ {
+ "id": 432,
+ "literals": [
+ "solidity",
+ ">=",
+ "0.4",
+ ".21",
+ "<",
+ "0.6",
+ ".0"
+ ],
+ "nodeType": "PragmaDirective",
+ "src": "0:32:2"
+ },
+ {
+ "baseContracts": [],
+ "contractDependencies": [],
+ "contractKind": "contract",
+ "documentation": null,
+ "fullyImplemented": true,
+ "id": 487,
+ "linearizedBaseContracts": [
+ 487
+ ],
+ "name": "Migrations",
+ "nodeType": "ContractDefinition",
+ "nodes": [
+ {
+ "constant": false,
+ "id": 434,
+ "name": "owner",
+ "nodeType": "VariableDeclaration",
+ "scope": 487,
+ "src": "58:20:2",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 433,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "58:7:2",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 436,
+ "name": "last_completed_migration",
+ "nodeType": "VariableDeclaration",
+ "scope": 487,
+ "src": "82:36:2",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 435,
+ "name": "uint",
+ "nodeType": "ElementaryTypeName",
+ "src": "82:4:2",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 444,
+ "nodeType": "Block",
+ "src": "144:29:2",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 442,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 439,
+ "name": "owner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 434,
+ "src": "150:5:2",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 440,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "158:3:2",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 441,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "158:10:2",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "src": "150:18:2",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 443,
+ "nodeType": "ExpressionStatement",
+ "src": "150:18:2"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 445,
+ "implemented": true,
+ "kind": "constructor",
+ "modifiers": [],
+ "name": "",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 437,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "134:2:2"
+ },
+ "returnParameters": {
+ "id": 438,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "144:0:2"
+ },
+ "scope": 487,
+ "src": "123:50:2",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 453,
+ "nodeType": "Block",
+ "src": "199:37:2",
+ "statements": [
+ {
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 450,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 447,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "209:3:2",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 448,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "209:10:2",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 449,
+ "name": "owner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 434,
+ "src": "223:5:2",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "209:19:2",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": null,
+ "id": 452,
+ "nodeType": "IfStatement",
+ "src": "205:26:2",
+ "trueBody": {
+ "id": 451,
+ "nodeType": "PlaceholderStatement",
+ "src": "230:1:2"
+ }
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 454,
+ "name": "restricted",
+ "nodeType": "ModifierDefinition",
+ "parameters": {
+ "id": 446,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "196:2:2"
+ },
+ "src": "177:59:2",
+ "visibility": "internal"
+ },
+ {
+ "body": {
+ "id": 465,
+ "nodeType": "Block",
+ "src": "296:47:2",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 463,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 461,
+ "name": "last_completed_migration",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 436,
+ "src": "302:24:2",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 462,
+ "name": "completed",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 456,
+ "src": "329:9:2",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "302:36:2",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 464,
+ "nodeType": "ExpressionStatement",
+ "src": "302:36:2"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 466,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 459,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 458,
+ "name": "restricted",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 454,
+ "src": "285:10:2",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "285:10:2"
+ }
+ ],
+ "name": "setCompleted",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 457,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 456,
+ "name": "completed",
+ "nodeType": "VariableDeclaration",
+ "scope": 466,
+ "src": "262:14:2",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 455,
+ "name": "uint",
+ "nodeType": "ElementaryTypeName",
+ "src": "262:4:2",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "261:16:2"
+ },
+ "returnParameters": {
+ "id": 460,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "296:0:2"
+ },
+ "scope": 487,
+ "src": "240:103:2",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 485,
+ "nodeType": "Block",
+ "src": "403:109:2",
+ "statements": [
+ {
+ "assignments": [
+ 474
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 474,
+ "name": "upgraded",
+ "nodeType": "VariableDeclaration",
+ "scope": 485,
+ "src": "409:19:2",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Migrations_$487",
+ "typeString": "contract Migrations"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 473,
+ "name": "Migrations",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 487,
+ "src": "409:10:2",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Migrations_$487",
+ "typeString": "contract Migrations"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 478,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 476,
+ "name": "new_address",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 468,
+ "src": "442:11:2",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 475,
+ "name": "Migrations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 487,
+ "src": "431:10:2",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_contract$_Migrations_$487_$",
+ "typeString": "type(contract Migrations)"
+ }
+ },
+ "id": 477,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "431:23:2",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Migrations_$487",
+ "typeString": "contract Migrations"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "409:45:2"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 482,
+ "name": "last_completed_migration",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 436,
+ "src": "482:24:2",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 479,
+ "name": "upgraded",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 474,
+ "src": "460:8:2",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Migrations_$487",
+ "typeString": "contract Migrations"
+ }
+ },
+ "id": 481,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "setCompleted",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 466,
+ "src": "460:21:2",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
+ "typeString": "function (uint256) external"
+ }
+ },
+ "id": 483,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "460:47:2",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 484,
+ "nodeType": "ExpressionStatement",
+ "src": "460:47:2"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 486,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 471,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 470,
+ "name": "restricted",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 454,
+ "src": "392:10:2",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "392:10:2"
+ }
+ ],
+ "name": "upgrade",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 469,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 468,
+ "name": "new_address",
+ "nodeType": "VariableDeclaration",
+ "scope": 486,
+ "src": "364:19:2",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 467,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "364:7:2",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "363:21:2"
+ },
+ "returnParameters": {
+ "id": 472,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "403:0:2"
+ },
+ "scope": 487,
+ "src": "347:165:2",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ }
+ ],
+ "scope": 488,
+ "src": "34:480:2"
+ }
+ ],
+ "src": "0:516:2"
+ },
+ "compiler": {
+ "name": "solc",
+ "version": "0.5.11+commit.c082d0b4.Emscripten.clang"
+ },
+ "networks": {
+ "411": {
+ "events": {},
+ "links": {},
+ "address": "0x0082Bf992f11C28EAA9072a768883956814828c8",
+ "transactionHash": "0xe339e49e9a0bbc506bc045b4de5d8023d4baed1bc9a905a90f9bcf35026c40c1"
+ }
+ },
+ "schemaVersion": "3.0.11",
+ "updatedAt": "2019-09-29T03:11:52.546Z",
+ "devdoc": {
+ "methods": {}
+ },
+ "userdoc": {
+ "methods": {}
+ }
+} \ No newline at end of file
diff --git a/build/contracts/NodeStaker.json b/build/contracts/NodeStaker.json
new file mode 100644
index 0000000..353fd96
--- /dev/null
+++ b/build/contracts/NodeStaker.json
@@ -0,0 +1,10076 @@
+{
+ "contractName": "NodeStaker",
+ "abi": [
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "registered",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "availableUnstakeAmount",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [],
+ "name": "renounceOwnership",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "owner",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "isOwner",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "isFoundation",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "newOwner",
+ "type": "address"
+ }
+ ],
+ "name": "transferOwnership",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "_address",
+ "type": "address"
+ }
+ ],
+ "name": "setFoundationAddress",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "vested",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "payable": true,
+ "stateMutability": "payable",
+ "type": "fallback"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "sender",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "bytes",
+ "name": "publicKey",
+ "type": "bytes"
+ },
+ {
+ "indexed": false,
+ "internalType": "string",
+ "name": "name",
+ "type": "string"
+ },
+ {
+ "indexed": false,
+ "internalType": "string",
+ "name": "email",
+ "type": "string"
+ },
+ {
+ "indexed": false,
+ "internalType": "string",
+ "name": "location",
+ "type": "string"
+ },
+ {
+ "indexed": false,
+ "internalType": "string",
+ "name": "url",
+ "type": "string"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "value",
+ "type": "uint256"
+ }
+ ],
+ "name": "NodeRegister",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "sender",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "amount",
+ "type": "uint256"
+ }
+ ],
+ "name": "NodeDeposited",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "amount",
+ "type": "uint256"
+ }
+ ],
+ "name": "NodeVested",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "owner",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "amount",
+ "type": "uint256"
+ }
+ ],
+ "name": "NodeWithdrawn",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "bytes",
+ "name": "oldKey",
+ "type": "bytes"
+ },
+ {
+ "indexed": false,
+ "internalType": "bytes",
+ "name": "newKey",
+ "type": "bytes"
+ }
+ ],
+ "name": "NodePublicKeyReplaced",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "amount",
+ "type": "uint256"
+ }
+ ],
+ "name": "UnstakedByFoundation",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "from",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "to",
+ "type": "address"
+ }
+ ],
+ "name": "OwnershipTranferedByFoundation",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "previousOwner",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "newOwner",
+ "type": "address"
+ }
+ ],
+ "name": "OwnershipTransferred",
+ "type": "event"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "getStakedAmount",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "getUnstakedAmount",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "bytes",
+ "name": "publicKey",
+ "type": "bytes"
+ },
+ {
+ "internalType": "string",
+ "name": "name",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "email",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "location",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "url",
+ "type": "string"
+ }
+ ],
+ "name": "register",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [],
+ "name": "withdraw",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "bytes",
+ "name": "key",
+ "type": "bytes"
+ }
+ ],
+ "name": "replaceNodePublicKey",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "newOwner",
+ "type": "address"
+ }
+ ],
+ "name": "transferOwnershipByFoundation",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "amount",
+ "type": "uint256"
+ }
+ ],
+ "name": "unstakeByFoundation",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "amount",
+ "type": "uint256"
+ }
+ ],
+ "name": "vest",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ }
+ ],
+ "metadata": "{\"compiler\":{\"version\":\"0.5.11+commit.c082d0b4\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"registered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"withdraw\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"key\",\"type\":\"bytes\"}],\"name\":\"replaceNodePublicKey\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"vest\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"availableUnstakeAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"unstakeByFoundation\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getStakedAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getUnstakedAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"email\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"location\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"url\",\"type\":\"string\"}],\"name\":\"register\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isFoundation\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnershipByFoundation\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"setFoundationAddress\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"vested\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"email\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"location\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"url\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"NodeRegister\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"NodeDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"NodeVested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"NodeWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"oldKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"newKey\",\"type\":\"bytes\"}],\"name\":\"NodePublicKeyReplaced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"UnstakedByFoundation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTranferedByFoundation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"}],\"devdoc\":{\"methods\":{\"isOwner()\":{\"return\":\"true if `msg.sender` is the owner of the contract.\"},\"owner()\":{\"return\":\"the address of the owner.\"},\"register(bytes,string,string,string,string)\":{\"details\":\"register a node\"},\"renounceOwnership()\":{\"details\":\"Allows the current owner to relinquish control of the contract.\"},\"replaceNodePublicKey(bytes)\":{\"details\":\"replace node public key\"},\"transferOwnership(address)\":{\"details\":\"Allows the current owner to transfer control of the contract to a newOwner.\",\"params\":{\"newOwner\":\"The address to transfer ownership to.\"}},\"transferOwnershipByFoundation(address)\":{\"details\":\"transfer node ownership\"},\"unstakeByFoundation(uint256)\":{\"details\":\"unstake by foundation\"},\"vest(uint256)\":{\"details\":\"vest\"},\"withdraw()\":{\"details\":\"withdraw balance\"}}},\"userdoc\":{\"methods\":{\"renounceOwnership()\":{\"notice\":\"Renouncing to ownership will leave the contract without an owner. It will not be possible to call the functions with the `onlyOwner` modifier anymore.\"},\"unstakeByFoundation(uint256)\":{\"notice\":\"only can unstake vested amount\"}}}},\"settings\":{\"compilationTarget\":{\"/Users/aitjcize/Work/tangerine-network/node-staker/contracts/NodeStaker.sol\":\"NodeStaker\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/aitjcize/Work/tangerine-network/node-staker/contracts/FoundationOwnable.sol\":{\"keccak256\":\"0xf7a0313191c80af18efbb2c914fa12bf5a96fb5a43c20c21371f67bcaf449bcf\",\"urls\":[\"bzz-raw://6bc9950f402bb1654e0ab1b1357fa857f6bd6e8a5863b9ca7e59d97b51ebd1ab\",\"dweb:/ipfs/QmeWak99q7rfSZzV79n5GhFQZTeZHhkoV4Loxw6sFmiQC4\"]},\"/Users/aitjcize/Work/tangerine-network/node-staker/contracts/Governance.sol\":{\"keccak256\":\"0xcfdc3785ac2c5c1937e80ca46b030d083952a66f22732cd80e440cc45675ea62\",\"urls\":[\"bzz-raw://5f33f67e58c7ddc0f100cd2fbe89f2a0a0169bda17742a3d633df62a7921d051\",\"dweb:/ipfs/QmSHtHd9VBagDzc4FaKRZ56pZkZ9Nu1AA7YjwyokhFRU5q\"]},\"/Users/aitjcize/Work/tangerine-network/node-staker/contracts/NodeStaker.sol\":{\"keccak256\":\"0x2e7b39e18d5a0a27afee23974ec54491286ece6f89c12818ee67829a4e5be905\",\"urls\":[\"bzz-raw://aeb7693cf5be3214117b4949c90e9dee3b8bce27f1bf9ffaa8952eb20faacffe\",\"dweb:/ipfs/Qmc15ZPPcRK54dDnVMfXiTE8abdbdSrcX3kwjtFjVuENVm\"]},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x965012d27b4262d7a41f5028cbb30c51ebd9ecd4be8fb30380aaa7a3c64fbc8b\",\"urls\":[\"bzz-raw://1eb493553b27efd46c231a836a83ce50d215639feb97b4aac9f301d0fd034ff5\",\"dweb:/ipfs/QmbMdvSXcqGKxeeYvzF3VrWpoHQyVzMXBhzhAokF2Gdymv\"]},\"openzeppelin-solidity/contracts/ownership/Ownable.sol\":{\"keccak256\":\"0x980de387a1a020a498f53d00f89fecebb12c949a17e8f160093c0303ede2b786\",\"urls\":[\"bzz-raw://f07a2c393caa85f62f0aaa461e3edd50aa59371d4209778ba0558d7f8b4b856c\",\"dweb:/ipfs/QmeN3ZiYGSjCnQFeYaJNgoXjF9eDue1g3e9pqManRkeBtV\"]}},\"version\":1}",
+ "bytecode": "0x60806040819052600280546001600160a01b031990811673246fcde58581e2754f215a523c0718c4bfc8041f179091556000805490911633178082556001600160a01b0316917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3600180546001600160a01b031916331790556123a88061008b6000396000f3fe6080604052600436106100fe5760003560e01c80638f32d59b11610095578063d392a7d511610064578063d392a7d5146105f0578063e97b387414610605578063f2fde38b14610638578063f41377ca1461066b578063fea5657c1461069e576100fe565b80638f32d59b146102ec578063a4e15db914610301578063b244fdcb14610316578063d242f4cc1461032b576100fe565b80636d6c12f3116100d15780636d6c12f314610255578063715018a61461027c57806375fc0e0d146102915780638da5cb5b146102bb576100fe565b80632de40ce31461013a5780633ccfd60b146101635780633f007c201461017a5780636a760b801461022b575b6040805133815234602082015281517f47a6374f7d50799673b068330af87c22b7a43b4d8ac57b66965556967d814ea0929181900390910190a1005b34801561014657600080fd5b5061014f6106b3565b604080519115158252519081900360200190f35b34801561016f57600080fd5b506101786106c3565b005b34801561018657600080fd5b506101786004803603602081101561019d57600080fd5b810190602081018135600160201b8111156101b757600080fd5b8201836020820111156101c957600080fd5b803590602001918460018302840111600160201b831117156101ea57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061087e945050505050565b34801561023757600080fd5b506101786004803603602081101561024e57600080fd5b5035610f7c565b34801561026157600080fd5b5061026a61107c565b60408051918252519081900360200190f35b34801561028857600080fd5b50610178611082565b34801561029d57600080fd5b50610178600480360360208110156102b457600080fd5b50356110dd565b3480156102c757600080fd5b506102d061126c565b604080516001600160a01b039092168252519081900360200190f35b3480156102f857600080fd5b5061014f61127b565b34801561030d57600080fd5b5061026a61128c565b34801561032257600080fd5b5061026a611710565b34801561033757600080fd5b50610178600480360360a081101561034e57600080fd5b810190602081018135600160201b81111561036857600080fd5b82018360208201111561037a57600080fd5b803590602001918460018302840111600160201b8311171561039b57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156103ed57600080fd5b8201836020820111156103ff57600080fd5b803590602001918460018302840111600160201b8311171561042057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561047257600080fd5b82018360208201111561048457600080fd5b803590602001918460018302840111600160201b831117156104a557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156104f757600080fd5b82018360208201111561050957600080fd5b803590602001918460018302840111600160201b8311171561052a57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561057c57600080fd5b82018360208201111561058e57600080fd5b803590602001918460018302840111600160201b831117156105af57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611b97945050505050565b3480156105fc57600080fd5b5061014f61214a565b34801561061157600080fd5b506101786004803603602081101561062857600080fd5b50356001600160a01b031661215b565b34801561064457600080fd5b506101786004803603602081101561065b57600080fd5b50356001600160a01b0316612204565b34801561067757600080fd5b506101786004803603602081101561068e57600080fd5b50356001600160a01b0316612221565b3480156106aa57600080fd5b5061026a61228e565b600254600160a01b900460ff1681565b6106cb61127b565b6106d457600080fd5b600254600160a01b900460ff16610727576040805162461bcd60e51b81526020600482015260126024820152711b9bdd081c9959da5cdd195c9959081e595d60721b604482015290519081900360640190fd5b600260009054906101000a90046001600160a01b03166001600160a01b031663501883016040518163ffffffff1660e01b815260040160206040518083038186803b15801561077557600080fd5b505afa158015610789573d6000803e3d6000fd5b505050506040513d602081101561079f57600080fd5b50511561080f57600260009054906101000a90046001600160a01b03166001600160a01b0316633ccfd60b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156107f657600080fd5b505af115801561080a573d6000803e3d6000fd5b505050505b604051303190339082156108fc029083906000818181858888f1935050505015801561083f573d6000803e3d6000fd5b50604080513381526020810183905281517f9f1245572fa226a27329c7a7ed7ea272cda61da69552acd8bb7bef5677d08367929181900390910190a150565b61088661127b565b61088f57600080fd5b600254600160a01b900460ff166108e2576040805162461bcd60e51b81526020600482015260126024820152711b9bdd081c9959da5cdd195c9959081e595d60721b604482015290519081900360640190fd5b60025460408051638503112360e01b815230600482015290516060926000926001600160a01b0390911691638503112391602480820192602092909190829003018186803b15801561093357600080fd5b505afa158015610947573d6000803e3d6000fd5b505050506040513d602081101561095d57600080fd5b5051600254604080516238a78560e71b81526004810184905290519293506001600160a01b0390911691631c53c28091602480820192600092909190829003018186803b1580156109ad57600080fd5b505afa1580156109c1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526101408110156109eb57600080fd5b815160208301805160405192949293830192919084600160201b821115610a1157600080fd5b908301906020820185811115610a2657600080fd5b8251600160201b811182820188101715610a3f57600080fd5b82525081516020918201929091019080838360005b83811015610a6c578181015183820152602001610a54565b50505050905090810190601f168015610a995780820380516001836020036101000a031916815260200191505b50604081815260208301519083015160609093018051919593949293929184600160201b821115610ac957600080fd5b908301906020820185811115610ade57600080fd5b8251600160201b811182820188101715610af757600080fd5b82525081516020918201929091019080838360005b83811015610b24578181015183820152602001610b0c565b50505050905090810190601f168015610b515780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084600160201b821115610b7357600080fd5b908301906020820185811115610b8857600080fd5b8251600160201b811182820188101715610ba157600080fd5b82525081516020918201929091019080838360005b83811015610bce578181015183820152602001610bb6565b50505050905090810190601f168015610bfb5780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084600160201b821115610c1d57600080fd5b908301906020820185811115610c3257600080fd5b8251600160201b811182820188101715610c4b57600080fd5b82525081516020918201929091019080838360005b83811015610c78578181015183820152602001610c60565b50505050905090810190601f168015610ca55780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084600160201b821115610cc757600080fd5b908301906020820185811115610cdc57600080fd5b8251600160201b811182820188101715610cf557600080fd5b82525081516020918201929091019080838360005b83811015610d22578181015183820152602001610d0a565b50505050905090810190601f168015610d4f5780820380516001836020036101000a031916815260200191505b5060405260200180519060200190929190805190602001909291905050509091929394959697985088985090919293949596509091929394955090919293945090919293509091925090915090505080925050600260009054906101000a90046001600160a01b03166001600160a01b0316633f007c20846040518263ffffffff1660e01b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610e13578181015183820152602001610dfb565b50505050905090810190601f168015610e405780820380516001836020036101000a031916815260200191505b5092505050600060405180830381600087803b158015610e5f57600080fd5b505af1158015610e73573d6000803e3d6000fd5b505050507f2a886948c8f577e57fd34e5888c9b134e579ddaaeabac3cb20ead075782f17db8284604051808060200180602001838103835285818151815260200191508051906020019080838360005b83811015610edb578181015183820152602001610ec3565b50505050905090810190601f168015610f085780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015610f3b578181015183820152602001610f23565b50505050905090810190601f168015610f685780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a1505050565b610f8461214a565b610fc7576040805162461bcd60e51b815260206004820152600f60248201526e37b7363c903337bab73230ba34b7b760891b604482015290519081900360640190fd5b600254600160a01b900460ff1661101a576040805162461bcd60e51b81526020600482015260126024820152711b9bdd081c9959da5cdd195c9959081e595d60721b604482015290519081900360640190fd5b60035461102d908263ffffffff61229416565b600355600454611043908263ffffffff61229416565b6004556040805182815290517fa7f17da00ac7401519320391a010c46adcec80f542c7783c14b2fde4afe380539181900360200190a150565b60045481565b61108a61127b565b61109357600080fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6110e561214a565b611128576040805162461bcd60e51b815260206004820152600f60248201526e37b7363c903337bab73230ba34b7b760891b604482015290519081900360640190fd5b600254600160a01b900460ff1661117b576040805162461bcd60e51b81526020600482015260126024820152711b9bdd081c9959da5cdd195c9959081e595d60721b604482015290519081900360640190fd5b6004548111156111bc5760405162461bcd60e51b81526004018080602001828103825260438152602001806123316043913960600191505060405180910390fd5b6004546111cf908263ffffffff6122ad16565b50600254604080516305c2fbcf60e31b81526004810184905290516001600160a01b0390921691632e17de789160248082019260009290919082900301818387803b15801561121d57600080fd5b505af1158015611231573d6000803e3d6000fd5b50506040805184815290517f78db5ae4d05ddd56ed1b359714d67cf8b55a5ed64a3d6783c0372f3cefe9e2089350908190036020019150a150565b6000546001600160a01b031690565b6000546001600160a01b0316331490565b60025460408051638503112360e01b8152306004820152905160009283926001600160a01b0390911691638503112391602480820192602092909190829003018186803b1580156112dc57600080fd5b505afa1580156112f0573d6000803e3d6000fd5b505050506040513d602081101561130657600080fd5b5051600254604080516238a78560e71b81526004810184905290519293506000926001600160a01b0390921691631c53c280916024808201928692909190829003018186803b15801561135857600080fd5b505afa15801561136c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261014081101561139657600080fd5b815160208301805160405192949293830192919084600160201b8211156113bc57600080fd5b9083019060208201858111156113d157600080fd5b8251600160201b8111828201881017156113ea57600080fd5b82525081516020918201929091019080838360005b838110156114175781810151838201526020016113ff565b50505050905090810190601f1680156114445780820380516001836020036101000a031916815260200191505b50604081815260208301519083015160609093018051919593949293929184600160201b82111561147457600080fd5b90830190602082018581111561148957600080fd5b8251600160201b8111828201881017156114a257600080fd5b82525081516020918201929091019080838360005b838110156114cf5781810151838201526020016114b7565b50505050905090810190601f1680156114fc5780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084600160201b82111561151e57600080fd5b90830190602082018581111561153357600080fd5b8251600160201b81118282018810171561154c57600080fd5b82525081516020918201929091019080838360005b83811015611579578181015183820152602001611561565b50505050905090810190601f1680156115a65780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084600160201b8211156115c857600080fd5b9083019060208201858111156115dd57600080fd5b8251600160201b8111828201881017156115f657600080fd5b82525081516020918201929091019080838360005b8381101561162357818101518382015260200161160b565b50505050905090810190601f1680156116505780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084600160201b82111561167257600080fd5b90830190602082018581111561168757600080fd5b8251600160201b8111828201881017156116a057600080fd5b82525081516020918201929091019080838360005b838110156116cd5781810151838201526020016116b5565b50505050905090810190601f1680156116fa5780820380516001836020036101000a031916815260200191505b5060405250969b50505050505050505050505090565b60025460408051638503112360e01b8152306004820152905160009283926001600160a01b0390911691638503112391602480820192602092909190829003018186803b15801561176057600080fd5b505afa158015611774573d6000803e3d6000fd5b505050506040513d602081101561178a57600080fd5b5051600254604080516238a78560e71b81526004810184905290519293506000926001600160a01b0390921691631c53c280916024808201928692909190829003018186803b1580156117dc57600080fd5b505afa1580156117f0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261014081101561181a57600080fd5b815160208301805160405192949293830192919084600160201b82111561184057600080fd5b90830190602082018581111561185557600080fd5b8251600160201b81118282018810171561186e57600080fd5b82525081516020918201929091019080838360005b8381101561189b578181015183820152602001611883565b50505050905090810190601f1680156118c85780820380516001836020036101000a031916815260200191505b50604081815260208301519083015160609093018051919593949293929184600160201b8211156118f857600080fd5b90830190602082018581111561190d57600080fd5b8251600160201b81118282018810171561192657600080fd5b82525081516020918201929091019080838360005b8381101561195357818101518382015260200161193b565b50505050905090810190601f1680156119805780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084600160201b8211156119a257600080fd5b9083019060208201858111156119b757600080fd5b8251600160201b8111828201881017156119d057600080fd5b82525081516020918201929091019080838360005b838110156119fd5781810151838201526020016119e5565b50505050905090810190601f168015611a2a5780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084600160201b821115611a4c57600080fd5b908301906020820185811115611a6157600080fd5b8251600160201b811182820188101715611a7a57600080fd5b82525081516020918201929091019080838360005b83811015611aa7578181015183820152602001611a8f565b50505050905090810190601f168015611ad45780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084600160201b821115611af657600080fd5b908301906020820185811115611b0b57600080fd5b8251600160201b811182820188101715611b2457600080fd5b82525081516020918201929091019080838360005b83811015611b51578181015183820152602001611b39565b50505050905090810190601f168015611b7e5780820380516001836020036101000a031916815260200191505b50604052602001519c5050505050505050505050505090565b611b9f61127b565b611ba857600080fd5b600254600160a01b900460ff1615611bfc576040805162461bcd60e51b8152602060048201526012602482015271185b1c9958591e481c9959da5cdd195c995960721b604482015290519081900360640190fd5b60025460408051631bad9e0560e11b815290516000926001600160a01b03169163375b3c0a916004808301926020929190829003018186803b158015611c4157600080fd5b505afa158015611c55573d6000803e3d6000fd5b505050506040513d6020811015611c6b57600080fd5b5051600254604051633490bd3360e21b815260a060048201908152895160a483015289519394506001600160a01b039092169263d242f4cc9285928b928b928b928b928b92918291602482019160448101916064820191608481019160c49091019060208d019080838360005b83811015611cf0578181015183820152602001611cd8565b50505050905090810190601f168015611d1d5780820380516001836020036101000a031916815260200191505b5086810385528a5181528a516020918201918c019080838360005b83811015611d50578181015183820152602001611d38565b50505050905090810190601f168015611d7d5780820380516001836020036101000a031916815260200191505b5086810384528951815289516020918201918b019080838360005b83811015611db0578181015183820152602001611d98565b50505050905090810190601f168015611ddd5780820380516001836020036101000a031916815260200191505b5086810383528851815288516020918201918a019080838360005b83811015611e10578181015183820152602001611df8565b50505050905090810190601f168015611e3d5780820380516001836020036101000a031916815260200191505b50868103825287518152875160209182019189019080838360005b83811015611e70578181015183820152602001611e58565b50505050905090810190601f168015611e9d5780820380516001836020036101000a031916815260200191505b509a50505050505050505050506000604051808303818588803b158015611ec357600080fd5b505af1158015611ed7573d6000803e3d6000fd5b50506002805460ff60a01b1916600160a01b1790555050604080513380825260c0820185905260e060208084018281528c51928501929092528b517f4d0296a31b4182dca6aff087582c284441743a09fbc7484015f5b57cb6801f8e965092948c948c948c948c948c948c9493908401916060850191608086019160a08701916101008801918e019080838360005b83811015611f7e578181015183820152602001611f66565b50505050905090810190601f168015611fab5780820380516001836020036101000a031916815260200191505b5086810385528b5181528b516020918201918d019080838360005b83811015611fde578181015183820152602001611fc6565b50505050905090810190601f16801561200b5780820380516001836020036101000a031916815260200191505b5086810384528a5181528a516020918201918c019080838360005b8381101561203e578181015183820152602001612026565b50505050905090810190601f16801561206b5780820380516001836020036101000a031916815260200191505b5086810383528951815289516020918201918b019080838360005b8381101561209e578181015183820152602001612086565b50505050905090810190601f1680156120cb5780820380516001836020036101000a031916815260200191505b5086810382528851815288516020918201918a019080838360005b838110156120fe5781810151838201526020016120e6565b50505050905090810190601f16801561212b5780820380516001836020036101000a031916815260200191505b509c5050505050505050505050505060405180910390a1505050505050565b6001546001600160a01b0316331490565b61216361214a565b6121a6576040805162461bcd60e51b815260206004820152600f60248201526e37b7363c903337bab73230ba34b7b760891b604482015290519081900360640190fd5b60006121b061126c565b90506121bb826122c2565b604080516001600160a01b0380841682528416602082015281517ffe459a7f10652ddcfe92820200e4635f93262667763531372e5bc42e56ec7c9b929181900390910190a15050565b61220c61127b565b61221557600080fd5b61221e816122c2565b50565b61222961214a565b61226c576040805162461bcd60e51b815260206004820152600f60248201526e37b7363c903337bab73230ba34b7b760891b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60035481565b6000828201838110156122a657600080fd5b9392505050565b6000828211156122bc57600080fd5b50900390565b6001600160a01b0381166122d557600080fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b039290921691909117905556fe756e7374616b696e6720616d6f756e742073686f756c64206e6f742062652067726561746572207468616e20617661696c61626c65556e7374616b65416d6f756e742ea265627a7a7231582098ec4cc44baa73fb87c6aaf60182c2dc71374051e4adc40bf8cbfdd0dcf009db64736f6c634300050b0032",
+ "deployedBytecode": "0x6080604052600436106100fe5760003560e01c80638f32d59b11610095578063d392a7d511610064578063d392a7d5146105f0578063e97b387414610605578063f2fde38b14610638578063f41377ca1461066b578063fea5657c1461069e576100fe565b80638f32d59b146102ec578063a4e15db914610301578063b244fdcb14610316578063d242f4cc1461032b576100fe565b80636d6c12f3116100d15780636d6c12f314610255578063715018a61461027c57806375fc0e0d146102915780638da5cb5b146102bb576100fe565b80632de40ce31461013a5780633ccfd60b146101635780633f007c201461017a5780636a760b801461022b575b6040805133815234602082015281517f47a6374f7d50799673b068330af87c22b7a43b4d8ac57b66965556967d814ea0929181900390910190a1005b34801561014657600080fd5b5061014f6106b3565b604080519115158252519081900360200190f35b34801561016f57600080fd5b506101786106c3565b005b34801561018657600080fd5b506101786004803603602081101561019d57600080fd5b810190602081018135600160201b8111156101b757600080fd5b8201836020820111156101c957600080fd5b803590602001918460018302840111600160201b831117156101ea57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061087e945050505050565b34801561023757600080fd5b506101786004803603602081101561024e57600080fd5b5035610f7c565b34801561026157600080fd5b5061026a61107c565b60408051918252519081900360200190f35b34801561028857600080fd5b50610178611082565b34801561029d57600080fd5b50610178600480360360208110156102b457600080fd5b50356110dd565b3480156102c757600080fd5b506102d061126c565b604080516001600160a01b039092168252519081900360200190f35b3480156102f857600080fd5b5061014f61127b565b34801561030d57600080fd5b5061026a61128c565b34801561032257600080fd5b5061026a611710565b34801561033757600080fd5b50610178600480360360a081101561034e57600080fd5b810190602081018135600160201b81111561036857600080fd5b82018360208201111561037a57600080fd5b803590602001918460018302840111600160201b8311171561039b57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156103ed57600080fd5b8201836020820111156103ff57600080fd5b803590602001918460018302840111600160201b8311171561042057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561047257600080fd5b82018360208201111561048457600080fd5b803590602001918460018302840111600160201b831117156104a557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156104f757600080fd5b82018360208201111561050957600080fd5b803590602001918460018302840111600160201b8311171561052a57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561057c57600080fd5b82018360208201111561058e57600080fd5b803590602001918460018302840111600160201b831117156105af57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611b97945050505050565b3480156105fc57600080fd5b5061014f61214a565b34801561061157600080fd5b506101786004803603602081101561062857600080fd5b50356001600160a01b031661215b565b34801561064457600080fd5b506101786004803603602081101561065b57600080fd5b50356001600160a01b0316612204565b34801561067757600080fd5b506101786004803603602081101561068e57600080fd5b50356001600160a01b0316612221565b3480156106aa57600080fd5b5061026a61228e565b600254600160a01b900460ff1681565b6106cb61127b565b6106d457600080fd5b600254600160a01b900460ff16610727576040805162461bcd60e51b81526020600482015260126024820152711b9bdd081c9959da5cdd195c9959081e595d60721b604482015290519081900360640190fd5b600260009054906101000a90046001600160a01b03166001600160a01b031663501883016040518163ffffffff1660e01b815260040160206040518083038186803b15801561077557600080fd5b505afa158015610789573d6000803e3d6000fd5b505050506040513d602081101561079f57600080fd5b50511561080f57600260009054906101000a90046001600160a01b03166001600160a01b0316633ccfd60b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156107f657600080fd5b505af115801561080a573d6000803e3d6000fd5b505050505b604051303190339082156108fc029083906000818181858888f1935050505015801561083f573d6000803e3d6000fd5b50604080513381526020810183905281517f9f1245572fa226a27329c7a7ed7ea272cda61da69552acd8bb7bef5677d08367929181900390910190a150565b61088661127b565b61088f57600080fd5b600254600160a01b900460ff166108e2576040805162461bcd60e51b81526020600482015260126024820152711b9bdd081c9959da5cdd195c9959081e595d60721b604482015290519081900360640190fd5b60025460408051638503112360e01b815230600482015290516060926000926001600160a01b0390911691638503112391602480820192602092909190829003018186803b15801561093357600080fd5b505afa158015610947573d6000803e3d6000fd5b505050506040513d602081101561095d57600080fd5b5051600254604080516238a78560e71b81526004810184905290519293506001600160a01b0390911691631c53c28091602480820192600092909190829003018186803b1580156109ad57600080fd5b505afa1580156109c1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526101408110156109eb57600080fd5b815160208301805160405192949293830192919084600160201b821115610a1157600080fd5b908301906020820185811115610a2657600080fd5b8251600160201b811182820188101715610a3f57600080fd5b82525081516020918201929091019080838360005b83811015610a6c578181015183820152602001610a54565b50505050905090810190601f168015610a995780820380516001836020036101000a031916815260200191505b50604081815260208301519083015160609093018051919593949293929184600160201b821115610ac957600080fd5b908301906020820185811115610ade57600080fd5b8251600160201b811182820188101715610af757600080fd5b82525081516020918201929091019080838360005b83811015610b24578181015183820152602001610b0c565b50505050905090810190601f168015610b515780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084600160201b821115610b7357600080fd5b908301906020820185811115610b8857600080fd5b8251600160201b811182820188101715610ba157600080fd5b82525081516020918201929091019080838360005b83811015610bce578181015183820152602001610bb6565b50505050905090810190601f168015610bfb5780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084600160201b821115610c1d57600080fd5b908301906020820185811115610c3257600080fd5b8251600160201b811182820188101715610c4b57600080fd5b82525081516020918201929091019080838360005b83811015610c78578181015183820152602001610c60565b50505050905090810190601f168015610ca55780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084600160201b821115610cc757600080fd5b908301906020820185811115610cdc57600080fd5b8251600160201b811182820188101715610cf557600080fd5b82525081516020918201929091019080838360005b83811015610d22578181015183820152602001610d0a565b50505050905090810190601f168015610d4f5780820380516001836020036101000a031916815260200191505b5060405260200180519060200190929190805190602001909291905050509091929394959697985088985090919293949596509091929394955090919293945090919293509091925090915090505080925050600260009054906101000a90046001600160a01b03166001600160a01b0316633f007c20846040518263ffffffff1660e01b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610e13578181015183820152602001610dfb565b50505050905090810190601f168015610e405780820380516001836020036101000a031916815260200191505b5092505050600060405180830381600087803b158015610e5f57600080fd5b505af1158015610e73573d6000803e3d6000fd5b505050507f2a886948c8f577e57fd34e5888c9b134e579ddaaeabac3cb20ead075782f17db8284604051808060200180602001838103835285818151815260200191508051906020019080838360005b83811015610edb578181015183820152602001610ec3565b50505050905090810190601f168015610f085780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015610f3b578181015183820152602001610f23565b50505050905090810190601f168015610f685780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a1505050565b610f8461214a565b610fc7576040805162461bcd60e51b815260206004820152600f60248201526e37b7363c903337bab73230ba34b7b760891b604482015290519081900360640190fd5b600254600160a01b900460ff1661101a576040805162461bcd60e51b81526020600482015260126024820152711b9bdd081c9959da5cdd195c9959081e595d60721b604482015290519081900360640190fd5b60035461102d908263ffffffff61229416565b600355600454611043908263ffffffff61229416565b6004556040805182815290517fa7f17da00ac7401519320391a010c46adcec80f542c7783c14b2fde4afe380539181900360200190a150565b60045481565b61108a61127b565b61109357600080fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6110e561214a565b611128576040805162461bcd60e51b815260206004820152600f60248201526e37b7363c903337bab73230ba34b7b760891b604482015290519081900360640190fd5b600254600160a01b900460ff1661117b576040805162461bcd60e51b81526020600482015260126024820152711b9bdd081c9959da5cdd195c9959081e595d60721b604482015290519081900360640190fd5b6004548111156111bc5760405162461bcd60e51b81526004018080602001828103825260438152602001806123316043913960600191505060405180910390fd5b6004546111cf908263ffffffff6122ad16565b50600254604080516305c2fbcf60e31b81526004810184905290516001600160a01b0390921691632e17de789160248082019260009290919082900301818387803b15801561121d57600080fd5b505af1158015611231573d6000803e3d6000fd5b50506040805184815290517f78db5ae4d05ddd56ed1b359714d67cf8b55a5ed64a3d6783c0372f3cefe9e2089350908190036020019150a150565b6000546001600160a01b031690565b6000546001600160a01b0316331490565b60025460408051638503112360e01b8152306004820152905160009283926001600160a01b0390911691638503112391602480820192602092909190829003018186803b1580156112dc57600080fd5b505afa1580156112f0573d6000803e3d6000fd5b505050506040513d602081101561130657600080fd5b5051600254604080516238a78560e71b81526004810184905290519293506000926001600160a01b0390921691631c53c280916024808201928692909190829003018186803b15801561135857600080fd5b505afa15801561136c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261014081101561139657600080fd5b815160208301805160405192949293830192919084600160201b8211156113bc57600080fd5b9083019060208201858111156113d157600080fd5b8251600160201b8111828201881017156113ea57600080fd5b82525081516020918201929091019080838360005b838110156114175781810151838201526020016113ff565b50505050905090810190601f1680156114445780820380516001836020036101000a031916815260200191505b50604081815260208301519083015160609093018051919593949293929184600160201b82111561147457600080fd5b90830190602082018581111561148957600080fd5b8251600160201b8111828201881017156114a257600080fd5b82525081516020918201929091019080838360005b838110156114cf5781810151838201526020016114b7565b50505050905090810190601f1680156114fc5780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084600160201b82111561151e57600080fd5b90830190602082018581111561153357600080fd5b8251600160201b81118282018810171561154c57600080fd5b82525081516020918201929091019080838360005b83811015611579578181015183820152602001611561565b50505050905090810190601f1680156115a65780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084600160201b8211156115c857600080fd5b9083019060208201858111156115dd57600080fd5b8251600160201b8111828201881017156115f657600080fd5b82525081516020918201929091019080838360005b8381101561162357818101518382015260200161160b565b50505050905090810190601f1680156116505780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084600160201b82111561167257600080fd5b90830190602082018581111561168757600080fd5b8251600160201b8111828201881017156116a057600080fd5b82525081516020918201929091019080838360005b838110156116cd5781810151838201526020016116b5565b50505050905090810190601f1680156116fa5780820380516001836020036101000a031916815260200191505b5060405250969b50505050505050505050505090565b60025460408051638503112360e01b8152306004820152905160009283926001600160a01b0390911691638503112391602480820192602092909190829003018186803b15801561176057600080fd5b505afa158015611774573d6000803e3d6000fd5b505050506040513d602081101561178a57600080fd5b5051600254604080516238a78560e71b81526004810184905290519293506000926001600160a01b0390921691631c53c280916024808201928692909190829003018186803b1580156117dc57600080fd5b505afa1580156117f0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261014081101561181a57600080fd5b815160208301805160405192949293830192919084600160201b82111561184057600080fd5b90830190602082018581111561185557600080fd5b8251600160201b81118282018810171561186e57600080fd5b82525081516020918201929091019080838360005b8381101561189b578181015183820152602001611883565b50505050905090810190601f1680156118c85780820380516001836020036101000a031916815260200191505b50604081815260208301519083015160609093018051919593949293929184600160201b8211156118f857600080fd5b90830190602082018581111561190d57600080fd5b8251600160201b81118282018810171561192657600080fd5b82525081516020918201929091019080838360005b8381101561195357818101518382015260200161193b565b50505050905090810190601f1680156119805780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084600160201b8211156119a257600080fd5b9083019060208201858111156119b757600080fd5b8251600160201b8111828201881017156119d057600080fd5b82525081516020918201929091019080838360005b838110156119fd5781810151838201526020016119e5565b50505050905090810190601f168015611a2a5780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084600160201b821115611a4c57600080fd5b908301906020820185811115611a6157600080fd5b8251600160201b811182820188101715611a7a57600080fd5b82525081516020918201929091019080838360005b83811015611aa7578181015183820152602001611a8f565b50505050905090810190601f168015611ad45780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084600160201b821115611af657600080fd5b908301906020820185811115611b0b57600080fd5b8251600160201b811182820188101715611b2457600080fd5b82525081516020918201929091019080838360005b83811015611b51578181015183820152602001611b39565b50505050905090810190601f168015611b7e5780820380516001836020036101000a031916815260200191505b50604052602001519c5050505050505050505050505090565b611b9f61127b565b611ba857600080fd5b600254600160a01b900460ff1615611bfc576040805162461bcd60e51b8152602060048201526012602482015271185b1c9958591e481c9959da5cdd195c995960721b604482015290519081900360640190fd5b60025460408051631bad9e0560e11b815290516000926001600160a01b03169163375b3c0a916004808301926020929190829003018186803b158015611c4157600080fd5b505afa158015611c55573d6000803e3d6000fd5b505050506040513d6020811015611c6b57600080fd5b5051600254604051633490bd3360e21b815260a060048201908152895160a483015289519394506001600160a01b039092169263d242f4cc9285928b928b928b928b928b92918291602482019160448101916064820191608481019160c49091019060208d019080838360005b83811015611cf0578181015183820152602001611cd8565b50505050905090810190601f168015611d1d5780820380516001836020036101000a031916815260200191505b5086810385528a5181528a516020918201918c019080838360005b83811015611d50578181015183820152602001611d38565b50505050905090810190601f168015611d7d5780820380516001836020036101000a031916815260200191505b5086810384528951815289516020918201918b019080838360005b83811015611db0578181015183820152602001611d98565b50505050905090810190601f168015611ddd5780820380516001836020036101000a031916815260200191505b5086810383528851815288516020918201918a019080838360005b83811015611e10578181015183820152602001611df8565b50505050905090810190601f168015611e3d5780820380516001836020036101000a031916815260200191505b50868103825287518152875160209182019189019080838360005b83811015611e70578181015183820152602001611e58565b50505050905090810190601f168015611e9d5780820380516001836020036101000a031916815260200191505b509a50505050505050505050506000604051808303818588803b158015611ec357600080fd5b505af1158015611ed7573d6000803e3d6000fd5b50506002805460ff60a01b1916600160a01b1790555050604080513380825260c0820185905260e060208084018281528c51928501929092528b517f4d0296a31b4182dca6aff087582c284441743a09fbc7484015f5b57cb6801f8e965092948c948c948c948c948c948c9493908401916060850191608086019160a08701916101008801918e019080838360005b83811015611f7e578181015183820152602001611f66565b50505050905090810190601f168015611fab5780820380516001836020036101000a031916815260200191505b5086810385528b5181528b516020918201918d019080838360005b83811015611fde578181015183820152602001611fc6565b50505050905090810190601f16801561200b5780820380516001836020036101000a031916815260200191505b5086810384528a5181528a516020918201918c019080838360005b8381101561203e578181015183820152602001612026565b50505050905090810190601f16801561206b5780820380516001836020036101000a031916815260200191505b5086810383528951815289516020918201918b019080838360005b8381101561209e578181015183820152602001612086565b50505050905090810190601f1680156120cb5780820380516001836020036101000a031916815260200191505b5086810382528851815288516020918201918a019080838360005b838110156120fe5781810151838201526020016120e6565b50505050905090810190601f16801561212b5780820380516001836020036101000a031916815260200191505b509c5050505050505050505050505060405180910390a1505050505050565b6001546001600160a01b0316331490565b61216361214a565b6121a6576040805162461bcd60e51b815260206004820152600f60248201526e37b7363c903337bab73230ba34b7b760891b604482015290519081900360640190fd5b60006121b061126c565b90506121bb826122c2565b604080516001600160a01b0380841682528416602082015281517ffe459a7f10652ddcfe92820200e4635f93262667763531372e5bc42e56ec7c9b929181900390910190a15050565b61220c61127b565b61221557600080fd5b61221e816122c2565b50565b61222961214a565b61226c576040805162461bcd60e51b815260206004820152600f60248201526e37b7363c903337bab73230ba34b7b760891b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60035481565b6000828201838110156122a657600080fd5b9392505050565b6000828211156122bc57600080fd5b50900390565b6001600160a01b0381166122d557600080fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b039290921691909117905556fe756e7374616b696e6720616d6f756e742073686f756c64206e6f742062652067726561746572207468616e20617661696c61626c65556e7374616b65416d6f756e742ea265627a7a7231582098ec4cc44baa73fb87c6aaf60182c2dc71374051e4adc40bf8cbfdd0dcf009db64736f6c634300050b0032",
+ "sourceMap": "212:3794:3:-;;;;;298:71;;;-1:-1:-1;;;;;;298:71:3;;;326:42;298:71;;;;;515:19:7;;;;;524:10;515:19;;;;-1:-1:-1;;;;;582:6:7;;549:40;;298:71:3;;549:40:7;114:17:0;:30;;-1:-1:-1;;;;;;114:30:0;134:10;114:30;;;212:3794:3;;;;;;",
+ "deployedSourceMap": "212:3794:3:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1251:36;;;1265:10;1251:36;;1277:9;1251:36;;;;;;;;;;;;;;;;;212:3794;373:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;373:22:3;;;:::i;:::-;;;;;;;;;;;;;;;;;;2432:222;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2432:222:3;;;:::i;:::-;;2706:304;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2706:304:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2706:304:3;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;2706:304:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2706:304:3;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2706:304:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;2706:304:3;;-1:-1:-1;2706:304:3;;-1:-1:-1;;;;;2706:304:3:i;3804:200::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3804:200:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3804:200:3;;:::i;424:37::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;424:37:3;;;:::i;:::-;;;;;;;;;;;;;;;;1347:137:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1347:137:7;;;:::i;3462:309:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3462:309:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3462:309:3;;:::i;659:77:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;659:77:7;;;:::i;:::-;;;;-1:-1:-1;;;;;659:77:7;;;;;;;;;;;;;;979:90;;8:9:-1;5:2;;;30:1;27;20:12;5:2;979:90:7;;;:::i;1371:215:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1371:215:3;;;:::i;1590:223::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1590:223:3;;;:::i;1948:439::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1948:439:3;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;1948:439:3;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;1948:439:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1948:439:3;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1948:439:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1948:439:3;;;;;;;;-1:-1:-1;1948:439:3;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;1948:439:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1948:439:3;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1948:439:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1948:439:3;;;;;;;;-1:-1:-1;1948:439:3;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;1948:439:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1948:439:3;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1948:439:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1948:439:3;;;;;;;;-1:-1:-1;1948:439:3;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;1948:439:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1948:439:3;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1948:439:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1948:439:3;;;;;;;;-1:-1:-1;1948:439:3;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;1948:439:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1948:439:3;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1948:439:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1948:439:3;;-1:-1:-1;1948:439:3;;-1:-1:-1;;;;;1948:439:3:i;335:100:0:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;335:100:0;;;:::i;3156:211:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3156:211:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3156:211:3;-1:-1:-1;;;;;3156:211:3;;:::i;1655:107:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1655:107:7;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1655:107:7;-1:-1:-1;;;;;1655:107:7;;:::i;439:109:0:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;439:109:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;439:109:0;-1:-1:-1;;;;;439:109:0;;:::i;399:21:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;399:21:3;;;:::i;373:22::-;;;-1:-1:-1;;;373:22:3;;;;;:::o;2432:222::-;863:9:7;:7;:9::i;:::-;855:18;;;;;;1064:10:3;;-1:-1:-1;;;1064:10:3;;;;1056:41;;;;;-1:-1:-1;;;1056:41:3;;;;;;;;;;;;-1:-1:-1;;;1056:41:3;;;;;;;;;;;;;;;2494:3;;;;;;;;;-1:-1:-1;;;;;2494:3:3;-1:-1:-1;;;;;2494:16:3;;:18;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2494:18:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2494:18:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2494:18:3;2490:38;;;2514:3;;;;;;;;;-1:-1:-1;;;;;2514:3:3;-1:-1:-1;;;;;2514:12:3;;:14;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2514:14:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2514:14:3;;;;2490:38;2578:27;;2559:4;2551:21;;2578:10;;:27;;;;;2551:21;;2534:14;2578:27;2534:14;2578:27;2551:21;2578:10;:27;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;2616:33:3;;;2630:10;2616:33;;;;;;;;;;;;;;;;;;;;;1103:1;2432:222::o;2706:304::-;863:9:7;:7;:9::i;:::-;855:18;;;;;;1064:10:3;;-1:-1:-1;;;1064:10:3;;;;1056:41;;;;;-1:-1:-1;;;1056:41:3;;;;;;;;;;;;-1:-1:-1;;;1056:41:3;;;;;;;;;;;;;;;2842:3;;:39;;;-1:-1:-1;;;2842:39:3;;2875:4;2842:39;;;;;;2792:19;;2817:14;;-1:-1:-1;;;;;2842:3:3;;;;:24;;:39;;;;;;;;;;;;;;;:3;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;2842:39:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2842:39:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2842:39:3;2908:3;;:17;;;-1:-1:-1;;;2908:17:3;;;;;;;;;;2842:39;;-1:-1:-1;;;;;;2908:3:3;;;;:9;;:17;;;;;:3;;:17;;;;;;;;:3;:17;;;5:2:-1;;;;30:1;27;20:12;5:2;2908:17:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2908:17:3;;;;;;39:16:-1;36:1;17:17;2:54;101:4;2908:17:3;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:3;5:12;;2:2;;;30:1;27;20:12;2:2;2908:17:3;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:20;;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;2908:17:3;;420:4:-1;411:14;;;;2908:17:3;;;;;411:14:-1;2908:17:3;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2908:17:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2908:17:3;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:20;;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;2908:17:3;;420:4:-1;411:14;;;;2908:17:3;;;;;411:14:-1;2908:17:3;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2908:17:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;2908:17:3;;420:4:-1;411:14;;;;2908:17:3;;;;;411:14:-1;2908:17:3;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2908:17:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;2908:17:3;;420:4:-1;411:14;;;;2908:17:3;;;;;411:14:-1;2908:17:3;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2908:17:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;2908:17:3;;420:4:-1;411:14;;;;2908:17:3;;;;;411:14:-1;2908:17:3;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2908:17:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2888:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2931:3;;;;;;;;;-1:-1:-1;;;;;2931:3:3;-1:-1:-1;;;;;2931:24:3;;2956:3;2931:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2931:29:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2931:29:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2931:29:3;;;;2971:34;2993:6;3001:3;2971:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2971:34:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2971:34:3;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2971:34:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1103:1;;2706:304;:::o;3804:200::-;239:14:0;:12;:14::i;:::-;231:42;;;;;-1:-1:-1;;;231:42:0;;;;;;;;;;;;-1:-1:-1;;;231:42:0;;;;;;;;;;;;;;;1064:10:3;;-1:-1:-1;;;1064:10:3;;;;1056:41;;;;;-1:-1:-1;;;1056:41:3;;;;;;;;;;;;-1:-1:-1;;;1056:41:3;;;;;;;;;;;;;;;3886:6;;:18;;3897:6;3886:18;:10;:18;:::i;:::-;3877:6;:27;3936:22;;:34;;3963:6;3936:34;:26;:34;:::i;:::-;3911:22;:59;3981:18;;;;;;;;;;;;;;;;;3804:200;:::o;424:37::-;;;;:::o;1347:137:7:-;863:9;:7;:9::i;:::-;855:18;;;;;;1445:1;1429:6;;1408:40;;-1:-1:-1;;;;;1429:6:7;;;;1408:40;;1445:1;;1408:40;1475:1;1458:19;;-1:-1:-1;;;;;;1458:19:7;;;1347:137::o;3462:309:3:-;239:14:0;:12;:14::i;:::-;231:42;;;;;-1:-1:-1;;;231:42:0;;;;;;;;;;;;-1:-1:-1;;;231:42:0;;;;;;;;;;;;;;;1064:10:3;;-1:-1:-1;;;1064:10:3;;;;1056:41;;;;;-1:-1:-1;;;1056:41:3;;;;;;;;;;;;-1:-1:-1;;;1056:41:3;;;;;;;;;;;;;;;3568:22;;3558:6;:32;;3550:112;;;;-1:-1:-1;;;3550:112:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3668:22;;:34;;3695:6;3668:34;:26;:34;:::i;:::-;-1:-1:-1;3708:3:3;;:19;;;-1:-1:-1;;;3708:19:3;;;;;;;;;;-1:-1:-1;;;;;3708:3:3;;;;:11;;:19;;;;;:3;;:19;;;;;;;;:3;;:19;;;5:2:-1;;;;30:1;27;20:12;5:2;3708:19:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;3738:28:3;;;;;;;;;;-1:-1:-1;3738:28:3;;;;;;;-1:-1:-1;3738:28:3;3462:309;:::o;659:77:7:-;697:7;723:6;-1:-1:-1;;;;;723:6:7;659:77;:::o;979:90::-;1019:4;1056:6;-1:-1:-1;;;;;1056:6:7;1042:10;:20;;979:90::o;1371:215:3:-;1459:3;;:39;;;-1:-1:-1;;;1459:39:3;;1492:4;1459:39;;;;;;1419:7;;;;-1:-1:-1;;;;;1459:3:3;;;;:24;;:39;;;;;;;;;;;;;;;:3;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;1459:39:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1459:39:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1459:39:3;1545:3;;:17;;;-1:-1:-1;;;1545:17:3;;;;;;;;;;1459:39;;-1:-1:-1;1505:14:3;;-1:-1:-1;;;;;1545:3:3;;;;:9;;:17;;;;;1505:14;;1545:17;;;;;;;;:3;:17;;;5:2:-1;;;;30:1;27;20:12;5:2;1545:17:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1545:17:3;;;;;;39:16:-1;36:1;17:17;2:54;101:4;1545:17:3;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:3;5:12;;2:2;;;30:1;27;20:12;2:2;1545:17:3;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:20;;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;1545:17:3;;420:4:-1;411:14;;;;1545:17:3;;;;;411:14:-1;1545:17:3;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1545:17:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1545:17:3;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:20;;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;1545:17:3;;420:4:-1;411:14;;;;1545:17:3;;;;;411:14:-1;1545:17:3;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1545:17:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;1545:17:3;;420:4:-1;411:14;;;;1545:17:3;;;;;411:14:-1;1545:17:3;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1545:17:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;1545:17:3;;420:4:-1;411:14;;;;1545:17:3;;;;;411:14:-1;1545:17:3;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1545:17:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;1545:17:3;;420:4:-1;411:14;;;;1545:17:3;;;;;411:14:-1;1545:17:3;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1545:17:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1545:17:3;;-1:-1:-1;1525:37:3;;-1:-1:-1;;;;;;;;;;;;1371:215:3;:::o;1590:223::-;1680:3;;:39;;;-1:-1:-1;;;1680:39:3;;1713:4;1680:39;;;;;;1640:7;;;;-1:-1:-1;;;;;1680:3:3;;;;:24;;:39;;;;;;;;;;;;;;;:3;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;1680:39:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1680:39:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1680:39:3;1770:3;;:17;;;-1:-1:-1;;;1770:17:3;;;;;;;;;;1680:39;;-1:-1:-1;1726:16:3;;-1:-1:-1;;;;;1770:3:3;;;;:9;;:17;;;;;1726:16;;1770:17;;;;;;;;:3;:17;;;5:2:-1;;;;30:1;27;20:12;5:2;1770:17:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1770:17:3;;;;;;39:16:-1;36:1;17:17;2:54;101:4;1770:17:3;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:3;5:12;;2:2;;;30:1;27;20:12;2:2;1770:17:3;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:20;;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;1770:17:3;;420:4:-1;411:14;;;;1770:17:3;;;;;411:14:-1;1770:17:3;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1770:17:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1770:17:3;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:20;;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;1770:17:3;;420:4:-1;411:14;;;;1770:17:3;;;;;411:14:-1;1770:17:3;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1770:17:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;1770:17:3;;420:4:-1;411:14;;;;1770:17:3;;;;;411:14:-1;1770:17:3;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1770:17:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;1770:17:3;;420:4:-1;411:14;;;;1770:17:3;;;;;411:14:-1;1770:17:3;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1770:17:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;1770:17:3;;420:4:-1;411:14;;;;1770:17:3;;;;;411:14:-1;1770:17:3;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1770:17:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1770:17:3;;;;;;-1:-1:-1;;;;;;;;;;;;;1590:223:3;:::o;1948:439::-;863:9:7;:7;:9::i;:::-;855:18;;;;;;2130:10:3;;-1:-1:-1;;;2130:10:3;;;;2129:11;2121:42;;;;;-1:-1:-1;;;2121:42:3;;;;;;;;;;;;-1:-1:-1;;;2121:42:3;;;;;;;;;;;;;;;2188:3;;:14;;;-1:-1:-1;;;2188:14:3;;;;2169:16;;-1:-1:-1;;;;;2188:3:3;;:12;;:14;;;;;;;;;;;;;;:3;:14;;;5:2:-1;;;;30:1;27;20:12;5:2;2188:14:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2188:14:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2188:14:3;2208:3;;:67;;-1:-1:-1;;;2208:67:3;;;;;;;;;;;;;;;;;2188:14;;-1:-1:-1;;;;;;2208:3:3;;;;:12;;2188:14;;2237:9;;2248:4;;2254:5;;2261:8;;2271:3;;2208:67;;;;;;;;;;;;;;;;;;;;;;;;2188:14;2208:67;;;;;;:3;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2208:67:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2208:67:3;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2208:67:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2208:67:3;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2208:67:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2208:67:3;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2208:67:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2208:67:3;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2208:67:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2208:67:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;2281:10:3;:17;;-1:-1:-1;;;;2281:17:3;-1:-1:-1;;;2281:17:3;;;-1:-1:-1;;2309:73:3;;;2322:10;2309:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2322:10:3;;2334:9;;2345:4;;2351:5;;2358:8;;2368:3;;2373:8;;2309:73;;;;;;;;;;;;;;;;;2281:17;2309:73;;;;;;;;;2281:17;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2309:73:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2309:73:3;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2309:73:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2309:73:3;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2309:73:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2309:73:3;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2309:73:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2309:73:3;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2309:73:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;883:1:7;1948:439:3;;;;;:::o;335:100:0:-;413:17;;-1:-1:-1;;;;;413:17:0;399:10;:31;;335:100::o;3156:211:3:-;239:14:0;:12;:14::i;:::-;231:42;;;;;-1:-1:-1;;;231:42:0;;;;;;;;;;;;-1:-1:-1;;;231:42:0;;;;;;;;;;;;;;;3241:16:3;3260:7;:5;:7::i;:::-;3241:26;;3273:28;3292:8;3273:18;:28::i;:::-;3312:50;;;-1:-1:-1;;;;;3312:50:3;;;;;;;;;;;;;;;;;;;;;;;;279:1:0;3156:211:3;:::o;1655:107:7:-;863:9;:7;:9::i;:::-;855:18;;;;;;1727:28;1746:8;1727:18;:28::i;:::-;1655:107;:::o;439:109:0:-;239:14;:12;:14::i;:::-;231:42;;;;;-1:-1:-1;;;231:42:0;;;;;;;;;;;;-1:-1:-1;;;231:42:0;;;;;;;;;;;;;;;515:17;:28;;-1:-1:-1;;;;;;515:28:0;-1:-1:-1;;;;;515:28:0;;;;;;;;;;439:109::o;399:21:3:-;;;;:::o;1431:145:6:-;1489:7;1520:5;;;1543:6;;;;1535:15;;;;;;1568:1;1431:145;-1:-1:-1;;;1431:145:6:o;1205:::-;1263:7;1295:1;1290;:6;;1282:15;;;;;;-1:-1:-1;1319:5:6;;;1205:145::o;1906:183:7:-;-1:-1:-1;;;;;1979:22:7;;1971:31;;;;;;2038:6;;;2017:38;;-1:-1:-1;;;;;2017:38:7;;;;2038:6;;;2017:38;;;2065:6;:17;;-1:-1:-1;;;;;;2065:17:7;-1:-1:-1;;;;;2065:17:7;;;;;;;;;;1906:183::o",
+ "source": "pragma solidity ^0.5.11;\n\nimport \"openzeppelin-solidity/contracts/math/SafeMath.sol\";\nimport \"openzeppelin-solidity/contracts/ownership/Ownable.sol\";\nimport \"./Governance.sol\";\nimport \"./FoundationOwnable.sol\";\n\ncontract NodeStaker is Ownable, FoundationOwnable {\n\n using SafeMath for uint256;\n\n Governance gov = Governance(0x246FcDE58581e2754f215A523C0718C4BFc8041F);\n bool public registered;\n uint256 public vested;\n uint256 public availableUnstakeAmount;\n\n // ------\n // Events\n // ------\n\n event NodeRegister(\n address sender,\n bytes publicKey,\n string name,\n string email,\n string location,\n string url,\n uint256 value\n );\n event NodeDeposited(address sender, uint256 amount);\n event NodeVested(uint256 amount);\n event NodeWithdrawn(address owner, uint256 amount);\n event NodePublicKeyReplaced(bytes oldKey, bytes newKey);\n event UnstakedByFoundation(uint256 amount);\n event OwnershipTranferedByFoundation(address from, address to);\n\n // ---------\n // Modifiers\n // ---------\n\n modifier onlyRegistered() {\n require(registered, \"not registered yet\");\n _;\n }\n\n /**\n * @notice funds from non-governance source will be prorated refund to foundation\n */\n function () external payable {\n emit NodeDeposited(msg.sender, msg.value);\n }\n\n // -------------------\n // Getters and Setters\n // -------------------\n function getStakedAmount() public view returns (uint256) {\n uint256 offset = uint256(gov.nodesOffsetByAddress(address(this)));\n uint256 staked;\n (,,staked,,,,,,,) = gov.nodes(offset);\n return staked;\n }\n\n function getUnstakedAmount() public view returns (uint256) {\n uint256 offset = uint256(gov.nodesOffsetByAddress(address(this)));\n uint256 unstaked;\n (,,,,,,,,unstaked,) = gov.nodes(offset);\n return unstaked;\n }\n\n // ------------------------\n // Node Operation Functions\n // ------------------------\n\n /**\n * @dev register a node\n */\n function register(\n bytes memory publicKey,\n string memory name,\n string memory email,\n string memory location,\n string memory url\n ) public onlyOwner {\n require(!registered, \"already registered\");\n uint256 minStake = gov.minStake();\n gov.register.value(minStake)(publicKey, name, email, location, url);\n registered = true;\n emit NodeRegister(msg.sender, publicKey, name, email, location, url, minStake);\n }\n\n /**\n * @dev withdraw balance\n */\n function withdraw() public onlyOwner onlyRegistered {\n if (gov.withdrawable()) gov.withdraw();\n uint256 amount = address(this).balance;\n msg.sender.transfer(amount);\n emit NodeWithdrawn(msg.sender, amount);\n }\n\n /**\n * @dev replace node public key\n */\n function replaceNodePublicKey(bytes memory key) public onlyOwner onlyRegistered {\n bytes memory oldKey;\n uint256 offset = uint256(gov.nodesOffsetByAddress(address(this)));\n (,oldKey,,,,,,,,) = gov.nodes(offset);\n gov.replaceNodePublicKey(key);\n emit NodePublicKeyReplaced(oldKey, key);\n }\n\n // -------------------------\n // Foundation Only Functions\n // -------------------------\n\n /**\n * @dev transfer node ownership\n */\n function transferOwnershipByFoundation(address newOwner) public onlyFoundation {\n address oldOwner = owner();\n _transferOwnership(newOwner);\n emit OwnershipTranferedByFoundation(oldOwner, newOwner);\n }\n\n /**\n * @dev unstake by foundation\n * @notice only can unstake vested amount\n */\n function unstakeByFoundation(uint256 amount) public onlyFoundation onlyRegistered {\n require(amount <= availableUnstakeAmount, \"unstaking amount should not be greater than availableUnstakeAmount.\");\n availableUnstakeAmount.sub(amount);\n gov.unstake(amount);\n emit UnstakedByFoundation(amount);\n }\n\n /**\n * @dev vest\n */\n function vest(uint256 amount) public onlyFoundation onlyRegistered {\n vested = vested.add(amount); \n availableUnstakeAmount = availableUnstakeAmount.add(amount);\n emit NodeVested(amount);\n }\n}\n",
+ "sourcePath": "/Users/aitjcize/Work/tangerine-network/node-staker/contracts/NodeStaker.sol",
+ "ast": {
+ "absolutePath": "/Users/aitjcize/Work/tangerine-network/node-staker/contracts/NodeStaker.sol",
+ "exportedSymbols": {
+ "NodeStaker": [
+ 861
+ ]
+ },
+ "id": 862,
+ "nodeType": "SourceUnit",
+ "nodes": [
+ {
+ "id": 489,
+ "literals": [
+ "solidity",
+ "^",
+ "0.5",
+ ".11"
+ ],
+ "nodeType": "PragmaDirective",
+ "src": "0:24:3"
+ },
+ {
+ "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol",
+ "file": "openzeppelin-solidity/contracts/math/SafeMath.sol",
+ "id": 490,
+ "nodeType": "ImportDirective",
+ "scope": 862,
+ "sourceUnit": 1408,
+ "src": "26:59:3",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "openzeppelin-solidity/contracts/ownership/Ownable.sol",
+ "file": "openzeppelin-solidity/contracts/ownership/Ownable.sol",
+ "id": 491,
+ "nodeType": "ImportDirective",
+ "scope": 862,
+ "sourceUnit": 1517,
+ "src": "86:63:3",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "/Users/aitjcize/Work/tangerine-network/node-staker/contracts/Governance.sol",
+ "file": "./Governance.sol",
+ "id": 492,
+ "nodeType": "ImportDirective",
+ "scope": 862,
+ "sourceUnit": 431,
+ "src": "150:26:3",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "/Users/aitjcize/Work/tangerine-network/node-staker/contracts/FoundationOwnable.sol",
+ "file": "./FoundationOwnable.sol",
+ "id": 493,
+ "nodeType": "ImportDirective",
+ "scope": 862,
+ "sourceUnit": 47,
+ "src": "177:33:3",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "baseContracts": [
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 494,
+ "name": "Ownable",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 1516,
+ "src": "235:7:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Ownable_$1516",
+ "typeString": "contract Ownable"
+ }
+ },
+ "id": 495,
+ "nodeType": "InheritanceSpecifier",
+ "src": "235:7:3"
+ },
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 496,
+ "name": "FoundationOwnable",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 46,
+ "src": "244:17:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_FoundationOwnable_$46",
+ "typeString": "contract FoundationOwnable"
+ }
+ },
+ "id": 497,
+ "nodeType": "InheritanceSpecifier",
+ "src": "244:17:3"
+ }
+ ],
+ "contractDependencies": [
+ 46,
+ 1516
+ ],
+ "contractKind": "contract",
+ "documentation": null,
+ "fullyImplemented": true,
+ "id": 861,
+ "linearizedBaseContracts": [
+ 861,
+ 46,
+ 1516
+ ],
+ "name": "NodeStaker",
+ "nodeType": "ContractDefinition",
+ "nodes": [
+ {
+ "id": 500,
+ "libraryName": {
+ "contractScope": null,
+ "id": 498,
+ "name": "SafeMath",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 1407,
+ "src": "273:8:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_SafeMath_$1407",
+ "typeString": "library SafeMath"
+ }
+ },
+ "nodeType": "UsingForDirective",
+ "src": "267:27:3",
+ "typeName": {
+ "id": 499,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "286:7:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ },
+ {
+ "constant": false,
+ "id": 505,
+ "name": "gov",
+ "nodeType": "VariableDeclaration",
+ "scope": 861,
+ "src": "298:71:3",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Governance_$430",
+ "typeString": "contract Governance"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 501,
+ "name": "Governance",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 430,
+ "src": "298:10:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Governance_$430",
+ "typeString": "contract Governance"
+ }
+ },
+ "value": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "307832343646634445353835383165323735346632313541353233433037313843344246633830343146",
+ "id": 503,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "326:42:3",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ "value": "0x246FcDE58581e2754f215A523C0718C4BFc8041F"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ ],
+ "id": 502,
+ "name": "Governance",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 430,
+ "src": "315:10:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_contract$_Governance_$430_$",
+ "typeString": "type(contract Governance)"
+ }
+ },
+ "id": 504,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "315:54:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Governance_$430",
+ "typeString": "contract Governance"
+ }
+ },
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 507,
+ "name": "registered",
+ "nodeType": "VariableDeclaration",
+ "scope": 861,
+ "src": "373:22:3",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 506,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "373:4:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 509,
+ "name": "vested",
+ "nodeType": "VariableDeclaration",
+ "scope": 861,
+ "src": "399:21:3",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 508,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "399:7:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 511,
+ "name": "availableUnstakeAmount",
+ "nodeType": "VariableDeclaration",
+ "scope": 861,
+ "src": "424:37:3",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 510,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "424:7:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 527,
+ "name": "NodeRegister",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 526,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 513,
+ "indexed": false,
+ "name": "sender",
+ "nodeType": "VariableDeclaration",
+ "scope": 527,
+ "src": "527:14:3",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 512,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "527:7:3",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 515,
+ "indexed": false,
+ "name": "publicKey",
+ "nodeType": "VariableDeclaration",
+ "scope": 527,
+ "src": "547:15:3",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 514,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "547:5:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 517,
+ "indexed": false,
+ "name": "name",
+ "nodeType": "VariableDeclaration",
+ "scope": 527,
+ "src": "568:11:3",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 516,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "568:6:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 519,
+ "indexed": false,
+ "name": "email",
+ "nodeType": "VariableDeclaration",
+ "scope": 527,
+ "src": "585:12:3",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 518,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "585:6:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 521,
+ "indexed": false,
+ "name": "location",
+ "nodeType": "VariableDeclaration",
+ "scope": 527,
+ "src": "603:15:3",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 520,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "603:6:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 523,
+ "indexed": false,
+ "name": "url",
+ "nodeType": "VariableDeclaration",
+ "scope": 527,
+ "src": "624:10:3",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 522,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "624:6:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 525,
+ "indexed": false,
+ "name": "value",
+ "nodeType": "VariableDeclaration",
+ "scope": 527,
+ "src": "640:13:3",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 524,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "640:7:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "521:136:3"
+ },
+ "src": "503:155:3"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 533,
+ "name": "NodeDeposited",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 532,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 529,
+ "indexed": false,
+ "name": "sender",
+ "nodeType": "VariableDeclaration",
+ "scope": 533,
+ "src": "681:14:3",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 528,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "681:7:3",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 531,
+ "indexed": false,
+ "name": "amount",
+ "nodeType": "VariableDeclaration",
+ "scope": 533,
+ "src": "697:14:3",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 530,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "697:7:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "680:32:3"
+ },
+ "src": "661:52:3"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 537,
+ "name": "NodeVested",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 536,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 535,
+ "indexed": false,
+ "name": "amount",
+ "nodeType": "VariableDeclaration",
+ "scope": 537,
+ "src": "733:14:3",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 534,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "733:7:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "732:16:3"
+ },
+ "src": "716:33:3"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 543,
+ "name": "NodeWithdrawn",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 542,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 539,
+ "indexed": false,
+ "name": "owner",
+ "nodeType": "VariableDeclaration",
+ "scope": 543,
+ "src": "772:13:3",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 538,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "772:7:3",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 541,
+ "indexed": false,
+ "name": "amount",
+ "nodeType": "VariableDeclaration",
+ "scope": 543,
+ "src": "787:14:3",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 540,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "787:7:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "771:31:3"
+ },
+ "src": "752:51:3"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 549,
+ "name": "NodePublicKeyReplaced",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 548,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 545,
+ "indexed": false,
+ "name": "oldKey",
+ "nodeType": "VariableDeclaration",
+ "scope": 549,
+ "src": "834:12:3",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 544,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "834:5:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 547,
+ "indexed": false,
+ "name": "newKey",
+ "nodeType": "VariableDeclaration",
+ "scope": 549,
+ "src": "848:12:3",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 546,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "848:5:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "833:28:3"
+ },
+ "src": "806:56:3"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 553,
+ "name": "UnstakedByFoundation",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 552,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 551,
+ "indexed": false,
+ "name": "amount",
+ "nodeType": "VariableDeclaration",
+ "scope": 553,
+ "src": "892:14:3",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 550,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "892:7:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "891:16:3"
+ },
+ "src": "865:43:3"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 559,
+ "name": "OwnershipTranferedByFoundation",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 558,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 555,
+ "indexed": false,
+ "name": "from",
+ "nodeType": "VariableDeclaration",
+ "scope": 559,
+ "src": "948:12:3",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 554,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "948:7:3",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 557,
+ "indexed": false,
+ "name": "to",
+ "nodeType": "VariableDeclaration",
+ "scope": 559,
+ "src": "962:10:3",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 556,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "962:7:3",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "947:26:3"
+ },
+ "src": "911:63:3"
+ },
+ {
+ "body": {
+ "id": 567,
+ "nodeType": "Block",
+ "src": "1050:59:3",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 562,
+ "name": "registered",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 507,
+ "src": "1064:10:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "6e6f74207265676973746572656420796574",
+ "id": 563,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "1076:20:3",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_c16aaa8f3b2fb22af6aabfa7f0392eed554bc4af8ac4b02f0e9cb83f01994d2b",
+ "typeString": "literal_string \"not registered yet\""
+ },
+ "value": "not registered yet"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_c16aaa8f3b2fb22af6aabfa7f0392eed554bc4af8ac4b02f0e9cb83f01994d2b",
+ "typeString": "literal_string \"not registered yet\""
+ }
+ ],
+ "id": 561,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 1534,
+ 1535
+ ],
+ "referencedDeclaration": 1535,
+ "src": "1056:7:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 564,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1056:41:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 565,
+ "nodeType": "ExpressionStatement",
+ "src": "1056:41:3"
+ },
+ {
+ "id": 566,
+ "nodeType": "PlaceholderStatement",
+ "src": "1103:1:3"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 568,
+ "name": "onlyRegistered",
+ "nodeType": "ModifierDefinition",
+ "parameters": {
+ "id": 560,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "1047:2:3"
+ },
+ "src": "1024:85:3",
+ "visibility": "internal"
+ },
+ {
+ "body": {
+ "id": 578,
+ "nodeType": "Block",
+ "src": "1240:52:3",
+ "statements": [
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 572,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "1265:3:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 573,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "1265:10:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 574,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "1277:3:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 575,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "value",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "1277:9:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 571,
+ "name": "NodeDeposited",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 533,
+ "src": "1251:13:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
+ "typeString": "function (address,uint256)"
+ }
+ },
+ "id": 576,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1251:36:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 577,
+ "nodeType": "EmitStatement",
+ "src": "1246:41:3"
+ }
+ ]
+ },
+ "documentation": "@notice funds from non-governance source will be prorated refund to foundation",
+ "id": 579,
+ "implemented": true,
+ "kind": "fallback",
+ "modifiers": [],
+ "name": "",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 569,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "1220:2:3"
+ },
+ "returnParameters": {
+ "id": 570,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "1240:0:3"
+ },
+ "scope": 861,
+ "src": "1211:81:3",
+ "stateMutability": "payable",
+ "superFunction": null,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 608,
+ "nodeType": "Block",
+ "src": "1428:158:3",
+ "statements": [
+ {
+ "assignments": [
+ 585
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 585,
+ "name": "offset",
+ "nodeType": "VariableDeclaration",
+ "scope": 608,
+ "src": "1434:14:3",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 584,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1434:7:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 594,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 590,
+ "name": "this",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1555,
+ "src": "1492:4:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_NodeStaker_$861",
+ "typeString": "contract NodeStaker"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_contract$_NodeStaker_$861",
+ "typeString": "contract NodeStaker"
+ }
+ ],
+ "id": 589,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "1484:7:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 591,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1484:13:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 587,
+ "name": "gov",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 505,
+ "src": "1459:3:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Governance_$430",
+ "typeString": "contract Governance"
+ }
+ },
+ "id": 588,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "nodesOffsetByAddress",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 89,
+ "src": "1459:24:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_int256_$",
+ "typeString": "function (address) view external returns (int256)"
+ }
+ },
+ "id": 592,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1459:39:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_int256",
+ "typeString": "int256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_int256",
+ "typeString": "int256"
+ }
+ ],
+ "id": 586,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "1451:7:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_uint256_$",
+ "typeString": "type(uint256)"
+ },
+ "typeName": "uint256"
+ },
+ "id": 593,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1451:48:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "1434:65:3"
+ },
+ {
+ "assignments": [
+ 596
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 596,
+ "name": "staked",
+ "nodeType": "VariableDeclaration",
+ "scope": 608,
+ "src": "1505:14:3",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 595,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1505:7:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 597,
+ "initialValue": null,
+ "nodeType": "VariableDeclarationStatement",
+ "src": "1505:14:3"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 604,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "components": [
+ null,
+ null,
+ {
+ "argumentTypes": null,
+ "id": 598,
+ "name": "staked",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 596,
+ "src": "1528:6:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null
+ ],
+ "id": 599,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "TupleExpression",
+ "src": "1525:17:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$__$_t_uint256_$__$__$__$__$__$__$__$",
+ "typeString": "tuple(,,uint256,,,,,,,)"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 602,
+ "name": "offset",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 585,
+ "src": "1555:6:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 600,
+ "name": "gov",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 505,
+ "src": "1545:3:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Governance_$430",
+ "typeString": "contract Governance"
+ }
+ },
+ "id": 601,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "nodes",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 85,
+ "src": "1545:9:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_address_$_t_bytes_memory_$_t_uint256_$_t_uint256_$_t_string_memory_$_t_string_memory_$_t_string_memory_$_t_string_memory_$_t_uint256_$_t_uint256_$",
+ "typeString": "function (uint256) view external returns (address,bytes memory,uint256,uint256,string memory,string memory,string memory,string memory,uint256,uint256)"
+ }
+ },
+ "id": 603,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1545:17:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$_t_address_$_t_bytes_memory_$_t_uint256_$_t_uint256_$_t_string_memory_$_t_string_memory_$_t_string_memory_$_t_string_memory_$_t_uint256_$_t_uint256_$",
+ "typeString": "tuple(address,bytes memory,uint256,uint256,string memory,string memory,string memory,string memory,uint256,uint256)"
+ }
+ },
+ "src": "1525:37:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 605,
+ "nodeType": "ExpressionStatement",
+ "src": "1525:37:3"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 606,
+ "name": "staked",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 596,
+ "src": "1575:6:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "functionReturnParameters": 583,
+ "id": 607,
+ "nodeType": "Return",
+ "src": "1568:13:3"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 609,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "getStakedAmount",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 580,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "1395:2:3"
+ },
+ "returnParameters": {
+ "id": 583,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 582,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 609,
+ "src": "1419:7:3",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 581,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1419:7:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "1418:9:3"
+ },
+ "scope": 861,
+ "src": "1371:215:3",
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 638,
+ "nodeType": "Block",
+ "src": "1649:164:3",
+ "statements": [
+ {
+ "assignments": [
+ 615
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 615,
+ "name": "offset",
+ "nodeType": "VariableDeclaration",
+ "scope": 638,
+ "src": "1655:14:3",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 614,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1655:7:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 624,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 620,
+ "name": "this",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1555,
+ "src": "1713:4:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_NodeStaker_$861",
+ "typeString": "contract NodeStaker"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_contract$_NodeStaker_$861",
+ "typeString": "contract NodeStaker"
+ }
+ ],
+ "id": 619,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "1705:7:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 621,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1705:13:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 617,
+ "name": "gov",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 505,
+ "src": "1680:3:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Governance_$430",
+ "typeString": "contract Governance"
+ }
+ },
+ "id": 618,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "nodesOffsetByAddress",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 89,
+ "src": "1680:24:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_int256_$",
+ "typeString": "function (address) view external returns (int256)"
+ }
+ },
+ "id": 622,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1680:39:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_int256",
+ "typeString": "int256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_int256",
+ "typeString": "int256"
+ }
+ ],
+ "id": 616,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "1672:7:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_uint256_$",
+ "typeString": "type(uint256)"
+ },
+ "typeName": "uint256"
+ },
+ "id": 623,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1672:48:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "1655:65:3"
+ },
+ {
+ "assignments": [
+ 626
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 626,
+ "name": "unstaked",
+ "nodeType": "VariableDeclaration",
+ "scope": 638,
+ "src": "1726:16:3",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 625,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1726:7:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 627,
+ "initialValue": null,
+ "nodeType": "VariableDeclarationStatement",
+ "src": "1726:16:3"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 634,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "components": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ {
+ "argumentTypes": null,
+ "id": 628,
+ "name": "unstaked",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 626,
+ "src": "1757:8:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ null
+ ],
+ "id": 629,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "TupleExpression",
+ "src": "1748:19:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$__$__$__$__$__$__$__$_t_uint256_$__$",
+ "typeString": "tuple(,,,,,,,,uint256,)"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 632,
+ "name": "offset",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 615,
+ "src": "1780:6:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 630,
+ "name": "gov",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 505,
+ "src": "1770:3:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Governance_$430",
+ "typeString": "contract Governance"
+ }
+ },
+ "id": 631,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "nodes",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 85,
+ "src": "1770:9:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_address_$_t_bytes_memory_$_t_uint256_$_t_uint256_$_t_string_memory_$_t_string_memory_$_t_string_memory_$_t_string_memory_$_t_uint256_$_t_uint256_$",
+ "typeString": "function (uint256) view external returns (address,bytes memory,uint256,uint256,string memory,string memory,string memory,string memory,uint256,uint256)"
+ }
+ },
+ "id": 633,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1770:17:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$_t_address_$_t_bytes_memory_$_t_uint256_$_t_uint256_$_t_string_memory_$_t_string_memory_$_t_string_memory_$_t_string_memory_$_t_uint256_$_t_uint256_$",
+ "typeString": "tuple(address,bytes memory,uint256,uint256,string memory,string memory,string memory,string memory,uint256,uint256)"
+ }
+ },
+ "src": "1748:39:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 635,
+ "nodeType": "ExpressionStatement",
+ "src": "1748:39:3"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 636,
+ "name": "unstaked",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 626,
+ "src": "1800:8:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "functionReturnParameters": 613,
+ "id": 637,
+ "nodeType": "Return",
+ "src": "1793:15:3"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 639,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "getUnstakedAmount",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 610,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "1616:2:3"
+ },
+ "returnParameters": {
+ "id": 613,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 612,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 639,
+ "src": "1640:7:3",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 611,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1640:7:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "1639:9:3"
+ },
+ "scope": 861,
+ "src": "1590:223:3",
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 695,
+ "nodeType": "Block",
+ "src": "2115:272:3",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 656,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "UnaryOperation",
+ "operator": "!",
+ "prefix": true,
+ "src": "2129:11:3",
+ "subExpression": {
+ "argumentTypes": null,
+ "id": 655,
+ "name": "registered",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 507,
+ "src": "2130:10:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "616c72656164792072656769737465726564",
+ "id": 657,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "2142:20:3",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_269c06100417d6799f278320f8bfa70884ed5db37cbbb03507b2629ec69f83d0",
+ "typeString": "literal_string \"already registered\""
+ },
+ "value": "already registered"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_269c06100417d6799f278320f8bfa70884ed5db37cbbb03507b2629ec69f83d0",
+ "typeString": "literal_string \"already registered\""
+ }
+ ],
+ "id": 654,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 1534,
+ 1535
+ ],
+ "referencedDeclaration": 1535,
+ "src": "2121:7:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 658,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2121:42:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 659,
+ "nodeType": "ExpressionStatement",
+ "src": "2121:42:3"
+ },
+ {
+ "assignments": [
+ 661
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 661,
+ "name": "minStake",
+ "nodeType": "VariableDeclaration",
+ "scope": 695,
+ "src": "2169:16:3",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 660,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "2169:7:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 665,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "expression": {
+ "argumentTypes": null,
+ "id": 662,
+ "name": "gov",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 505,
+ "src": "2188:3:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Governance_$430",
+ "typeString": "contract Governance"
+ }
+ },
+ "id": 663,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "minStake",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 142,
+ "src": "2188:12:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
+ "typeString": "function () view external returns (uint256)"
+ }
+ },
+ "id": 664,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2188:14:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "2169:33:3"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 673,
+ "name": "publicKey",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 641,
+ "src": "2237:9:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 674,
+ "name": "name",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 643,
+ "src": "2248:4:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 675,
+ "name": "email",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 645,
+ "src": "2254:5:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 676,
+ "name": "location",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 647,
+ "src": "2261:8:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 677,
+ "name": "url",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 649,
+ "src": "2271:3:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ },
+ {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ },
+ {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ },
+ {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ },
+ {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ }
+ ],
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 671,
+ "name": "minStake",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 661,
+ "src": "2227:8:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 666,
+ "name": "gov",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 505,
+ "src": "2208:3:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Governance_$430",
+ "typeString": "contract Governance"
+ }
+ },
+ "id": 669,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "register",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 377,
+ "src": "2208:12:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_external_payable$_t_bytes_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bytes memory,string memory,string memory,string memory,string memory) payable external"
+ }
+ },
+ "id": 670,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "value",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "2208:18:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_setvalue_pure$_t_uint256_$returns$_t_function_external_payable$_t_bytes_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$value_$",
+ "typeString": "function (uint256) pure returns (function (bytes memory,string memory,string memory,string memory,string memory) payable external)"
+ }
+ },
+ "id": 672,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2208:28:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_external_payable$_t_bytes_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$value",
+ "typeString": "function (bytes memory,string memory,string memory,string memory,string memory) payable external"
+ }
+ },
+ "id": 678,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2208:67:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 679,
+ "nodeType": "ExpressionStatement",
+ "src": "2208:67:3"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 682,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 680,
+ "name": "registered",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 507,
+ "src": "2281:10:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "hexValue": "74727565",
+ "id": 681,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "bool",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "2294:4:3",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "value": "true"
+ },
+ "src": "2281:17:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "id": 683,
+ "nodeType": "ExpressionStatement",
+ "src": "2281:17:3"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 685,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "2322:3:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 686,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "2322:10:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 687,
+ "name": "publicKey",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 641,
+ "src": "2334:9:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 688,
+ "name": "name",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 643,
+ "src": "2345:4:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 689,
+ "name": "email",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 645,
+ "src": "2351:5:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 690,
+ "name": "location",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 647,
+ "src": "2358:8:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 691,
+ "name": "url",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 649,
+ "src": "2368:3:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 692,
+ "name": "minStake",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 661,
+ "src": "2373:8:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ },
+ {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ },
+ {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ },
+ {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ },
+ {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 684,
+ "name": "NodeRegister",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 527,
+ "src": "2309:12:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint256_$returns$__$",
+ "typeString": "function (address,bytes memory,string memory,string memory,string memory,string memory,uint256)"
+ }
+ },
+ "id": 693,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2309:73:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 694,
+ "nodeType": "EmitStatement",
+ "src": "2304:78:3"
+ }
+ ]
+ },
+ "documentation": "@dev register a node",
+ "id": 696,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 652,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 651,
+ "name": "onlyOwner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1450,
+ "src": "2105:9:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "2105:9:3"
+ }
+ ],
+ "name": "register",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 650,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 641,
+ "name": "publicKey",
+ "nodeType": "VariableDeclaration",
+ "scope": 696,
+ "src": "1971:22:3",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 640,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "1971:5:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 643,
+ "name": "name",
+ "nodeType": "VariableDeclaration",
+ "scope": 696,
+ "src": "1999:18:3",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 642,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "1999:6:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 645,
+ "name": "email",
+ "nodeType": "VariableDeclaration",
+ "scope": 696,
+ "src": "2023:19:3",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 644,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "2023:6:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 647,
+ "name": "location",
+ "nodeType": "VariableDeclaration",
+ "scope": 696,
+ "src": "2048:22:3",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 646,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "2048:6:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 649,
+ "name": "url",
+ "nodeType": "VariableDeclaration",
+ "scope": 696,
+ "src": "2076:17:3",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 648,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "2076:6:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "1965:132:3"
+ },
+ "returnParameters": {
+ "id": 653,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "2115:0:3"
+ },
+ "scope": 861,
+ "src": "1948:439:3",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 733,
+ "nodeType": "Block",
+ "src": "2484:170:3",
+ "statements": [
+ {
+ "condition": {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "expression": {
+ "argumentTypes": null,
+ "id": 703,
+ "name": "gov",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 505,
+ "src": "2494:3:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Governance_$430",
+ "typeString": "contract Governance"
+ }
+ },
+ "id": 704,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "withdrawable",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 429,
+ "src": "2494:16:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_external_view$__$returns$_t_bool_$",
+ "typeString": "function () view external returns (bool)"
+ }
+ },
+ "id": 705,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2494:18:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": null,
+ "id": 711,
+ "nodeType": "IfStatement",
+ "src": "2490:38:3",
+ "trueBody": {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "expression": {
+ "argumentTypes": null,
+ "id": 706,
+ "name": "gov",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 505,
+ "src": "2514:3:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Governance_$430",
+ "typeString": "contract Governance"
+ }
+ },
+ "id": 708,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "withdraw",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 423,
+ "src": "2514:12:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_external_nonpayable$__$returns$__$",
+ "typeString": "function () external"
+ }
+ },
+ "id": 709,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2514:14:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 710,
+ "nodeType": "ExpressionStatement",
+ "src": "2514:14:3"
+ }
+ },
+ {
+ "assignments": [
+ 713
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 713,
+ "name": "amount",
+ "nodeType": "VariableDeclaration",
+ "scope": 733,
+ "src": "2534:14:3",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 712,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "2534:7:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 718,
+ "initialValue": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 715,
+ "name": "this",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1555,
+ "src": "2559:4:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_NodeStaker_$861",
+ "typeString": "contract NodeStaker"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_contract$_NodeStaker_$861",
+ "typeString": "contract NodeStaker"
+ }
+ ],
+ "id": 714,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "2551:7:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 716,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2551:13:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "id": 717,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "balance",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "2551:21:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "2534:38:3"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 724,
+ "name": "amount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 713,
+ "src": "2598:6:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 719,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "2578:3:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 722,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "2578:10:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "id": 723,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "transfer",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "2578:19:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$",
+ "typeString": "function (uint256)"
+ }
+ },
+ "id": 725,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2578:27:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 726,
+ "nodeType": "ExpressionStatement",
+ "src": "2578:27:3"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 728,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "2630:3:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 729,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "2630:10:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 730,
+ "name": "amount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 713,
+ "src": "2642:6:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 727,
+ "name": "NodeWithdrawn",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 543,
+ "src": "2616:13:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
+ "typeString": "function (address,uint256)"
+ }
+ },
+ "id": 731,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2616:33:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 732,
+ "nodeType": "EmitStatement",
+ "src": "2611:38:3"
+ }
+ ]
+ },
+ "documentation": "@dev withdraw balance",
+ "id": 734,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 699,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 698,
+ "name": "onlyOwner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1450,
+ "src": "2459:9:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "2459:9:3"
+ },
+ {
+ "arguments": null,
+ "id": 701,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 700,
+ "name": "onlyRegistered",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 568,
+ "src": "2469:14:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "2469:14:3"
+ }
+ ],
+ "name": "withdraw",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 697,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "2449:2:3"
+ },
+ "returnParameters": {
+ "id": 702,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "2484:0:3"
+ },
+ "scope": 861,
+ "src": "2432:222:3",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 776,
+ "nodeType": "Block",
+ "src": "2786:224:3",
+ "statements": [
+ {
+ "assignments": [
+ 744
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 744,
+ "name": "oldKey",
+ "nodeType": "VariableDeclaration",
+ "scope": 776,
+ "src": "2792:19:3",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 743,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "2792:5:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 745,
+ "initialValue": null,
+ "nodeType": "VariableDeclarationStatement",
+ "src": "2792:19:3"
+ },
+ {
+ "assignments": [
+ 747
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 747,
+ "name": "offset",
+ "nodeType": "VariableDeclaration",
+ "scope": 776,
+ "src": "2817:14:3",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 746,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "2817:7:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 756,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 752,
+ "name": "this",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1555,
+ "src": "2875:4:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_NodeStaker_$861",
+ "typeString": "contract NodeStaker"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_contract$_NodeStaker_$861",
+ "typeString": "contract NodeStaker"
+ }
+ ],
+ "id": 751,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "2867:7:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 753,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2867:13:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 749,
+ "name": "gov",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 505,
+ "src": "2842:3:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Governance_$430",
+ "typeString": "contract Governance"
+ }
+ },
+ "id": 750,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "nodesOffsetByAddress",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 89,
+ "src": "2842:24:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_int256_$",
+ "typeString": "function (address) view external returns (int256)"
+ }
+ },
+ "id": 754,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2842:39:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_int256",
+ "typeString": "int256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_int256",
+ "typeString": "int256"
+ }
+ ],
+ "id": 748,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "2834:7:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_uint256_$",
+ "typeString": "type(uint256)"
+ },
+ "typeName": "uint256"
+ },
+ "id": 755,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2834:48:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "2817:65:3"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 763,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "components": [
+ null,
+ {
+ "argumentTypes": null,
+ "id": 757,
+ "name": "oldKey",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 744,
+ "src": "2890:6:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ },
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null
+ ],
+ "id": 758,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "TupleExpression",
+ "src": "2888:17:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$_t_bytes_memory_ptr_$__$__$__$__$__$__$__$__$",
+ "typeString": "tuple(,bytes memory,,,,,,,,)"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 761,
+ "name": "offset",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 747,
+ "src": "2918:6:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 759,
+ "name": "gov",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 505,
+ "src": "2908:3:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Governance_$430",
+ "typeString": "contract Governance"
+ }
+ },
+ "id": 760,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "nodes",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 85,
+ "src": "2908:9:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_address_$_t_bytes_memory_$_t_uint256_$_t_uint256_$_t_string_memory_$_t_string_memory_$_t_string_memory_$_t_string_memory_$_t_uint256_$_t_uint256_$",
+ "typeString": "function (uint256) view external returns (address,bytes memory,uint256,uint256,string memory,string memory,string memory,string memory,uint256,uint256)"
+ }
+ },
+ "id": 762,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2908:17:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$_t_address_$_t_bytes_memory_$_t_uint256_$_t_uint256_$_t_string_memory_$_t_string_memory_$_t_string_memory_$_t_string_memory_$_t_uint256_$_t_uint256_$",
+ "typeString": "tuple(address,bytes memory,uint256,uint256,string memory,string memory,string memory,string memory,uint256,uint256)"
+ }
+ },
+ "src": "2888:37:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 764,
+ "nodeType": "ExpressionStatement",
+ "src": "2888:37:3"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 768,
+ "name": "key",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 736,
+ "src": "2956:3:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 765,
+ "name": "gov",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 505,
+ "src": "2931:3:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Governance_$430",
+ "typeString": "contract Governance"
+ }
+ },
+ "id": 767,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "replaceNodePublicKey",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 383,
+ "src": "2931:24:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$",
+ "typeString": "function (bytes memory) external"
+ }
+ },
+ "id": 769,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2931:29:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 770,
+ "nodeType": "ExpressionStatement",
+ "src": "2931:29:3"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 772,
+ "name": "oldKey",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 744,
+ "src": "2993:6:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 773,
+ "name": "key",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 736,
+ "src": "3001:3:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ },
+ {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ ],
+ "id": 771,
+ "name": "NodePublicKeyReplaced",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 549,
+ "src": "2971:21:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
+ "typeString": "function (bytes memory,bytes memory)"
+ }
+ },
+ "id": 774,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2971:34:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 775,
+ "nodeType": "EmitStatement",
+ "src": "2966:39:3"
+ }
+ ]
+ },
+ "documentation": "@dev replace node public key",
+ "id": 777,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 739,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 738,
+ "name": "onlyOwner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1450,
+ "src": "2761:9:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "2761:9:3"
+ },
+ {
+ "arguments": null,
+ "id": 741,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 740,
+ "name": "onlyRegistered",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 568,
+ "src": "2771:14:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "2771:14:3"
+ }
+ ],
+ "name": "replaceNodePublicKey",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 737,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 736,
+ "name": "key",
+ "nodeType": "VariableDeclaration",
+ "scope": 777,
+ "src": "2736:16:3",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 735,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "2736:5:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "2735:18:3"
+ },
+ "returnParameters": {
+ "id": 742,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "2786:0:3"
+ },
+ "scope": 861,
+ "src": "2706:304:3",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 798,
+ "nodeType": "Block",
+ "src": "3235:132:3",
+ "statements": [
+ {
+ "assignments": [
+ 785
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 785,
+ "name": "oldOwner",
+ "nodeType": "VariableDeclaration",
+ "scope": 798,
+ "src": "3241:16:3",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 784,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "3241:7:3",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 788,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 786,
+ "name": "owner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1441,
+ "src": "3260:5:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
+ "typeString": "function () view returns (address)"
+ }
+ },
+ "id": 787,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3260:7:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "3241:26:3"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 790,
+ "name": "newOwner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 779,
+ "src": "3292:8:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 789,
+ "name": "_transferOwnership",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1515,
+ "src": "3273:18:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
+ "typeString": "function (address)"
+ }
+ },
+ "id": 791,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3273:28:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 792,
+ "nodeType": "ExpressionStatement",
+ "src": "3273:28:3"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 794,
+ "name": "oldOwner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 785,
+ "src": "3343:8:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 795,
+ "name": "newOwner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 779,
+ "src": "3353:8:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 793,
+ "name": "OwnershipTranferedByFoundation",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 559,
+ "src": "3312:30:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
+ "typeString": "function (address,address)"
+ }
+ },
+ "id": 796,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3312:50:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 797,
+ "nodeType": "EmitStatement",
+ "src": "3307:55:3"
+ }
+ ]
+ },
+ "documentation": "@dev transfer node ownership",
+ "id": 799,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 782,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 781,
+ "name": "onlyFoundation",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 22,
+ "src": "3220:14:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "3220:14:3"
+ }
+ ],
+ "name": "transferOwnershipByFoundation",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 780,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 779,
+ "name": "newOwner",
+ "nodeType": "VariableDeclaration",
+ "scope": 799,
+ "src": "3195:16:3",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 778,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "3195:7:3",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "3194:18:3"
+ },
+ "returnParameters": {
+ "id": 783,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "3235:0:3"
+ },
+ "scope": 861,
+ "src": "3156:211:3",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 831,
+ "nodeType": "Block",
+ "src": "3544:227:3",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 811,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 809,
+ "name": "amount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 801,
+ "src": "3558:6:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "<=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 810,
+ "name": "availableUnstakeAmount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 511,
+ "src": "3568:22:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "3558:32:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "756e7374616b696e6720616d6f756e742073686f756c64206e6f742062652067726561746572207468616e20617661696c61626c65556e7374616b65416d6f756e742e",
+ "id": 812,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "3592:69:3",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_b7d94a053a83410c106ebcc410fc4fe23df1b7ed4a1d6d6b32a2118eb0e69c13",
+ "typeString": "literal_string \"unstaking amount should not be greater than availableUnstakeAmount.\""
+ },
+ "value": "unstaking amount should not be greater than availableUnstakeAmount."
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_b7d94a053a83410c106ebcc410fc4fe23df1b7ed4a1d6d6b32a2118eb0e69c13",
+ "typeString": "literal_string \"unstaking amount should not be greater than availableUnstakeAmount.\""
+ }
+ ],
+ "id": 808,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 1534,
+ 1535
+ ],
+ "referencedDeclaration": 1535,
+ "src": "3550:7:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 813,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3550:112:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 814,
+ "nodeType": "ExpressionStatement",
+ "src": "3550:112:3"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 818,
+ "name": "amount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 801,
+ "src": "3695:6:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 815,
+ "name": "availableUnstakeAmount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 511,
+ "src": "3668:22:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 817,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sub",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 1362,
+ "src": "3668:26:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 819,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3668:34:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 820,
+ "nodeType": "ExpressionStatement",
+ "src": "3668:34:3"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 824,
+ "name": "amount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 801,
+ "src": "3720:6:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 821,
+ "name": "gov",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 505,
+ "src": "3708:3:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Governance_$430",
+ "typeString": "contract Governance"
+ }
+ },
+ "id": 823,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "unstake",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 407,
+ "src": "3708:11:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
+ "typeString": "function (uint256) external"
+ }
+ },
+ "id": 825,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3708:19:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 826,
+ "nodeType": "ExpressionStatement",
+ "src": "3708:19:3"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 828,
+ "name": "amount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 801,
+ "src": "3759:6:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 827,
+ "name": "UnstakedByFoundation",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 553,
+ "src": "3738:20:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
+ "typeString": "function (uint256)"
+ }
+ },
+ "id": 829,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3738:28:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 830,
+ "nodeType": "EmitStatement",
+ "src": "3733:33:3"
+ }
+ ]
+ },
+ "documentation": "@dev unstake by foundation\n@notice only can unstake vested amount",
+ "id": 832,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 804,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 803,
+ "name": "onlyFoundation",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 22,
+ "src": "3514:14:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "3514:14:3"
+ },
+ {
+ "arguments": null,
+ "id": 806,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 805,
+ "name": "onlyRegistered",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 568,
+ "src": "3529:14:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "3529:14:3"
+ }
+ ],
+ "name": "unstakeByFoundation",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 802,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 801,
+ "name": "amount",
+ "nodeType": "VariableDeclaration",
+ "scope": 832,
+ "src": "3491:14:3",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 800,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "3491:7:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "3490:16:3"
+ },
+ "returnParameters": {
+ "id": 807,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "3544:0:3"
+ },
+ "scope": 861,
+ "src": "3462:309:3",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 859,
+ "nodeType": "Block",
+ "src": "3871:133:3",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 846,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 841,
+ "name": "vested",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 509,
+ "src": "3877:6:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 844,
+ "name": "amount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 834,
+ "src": "3897:6:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 842,
+ "name": "vested",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 509,
+ "src": "3886:6:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 843,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 1386,
+ "src": "3886:10:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 845,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3886:18:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "3877:27:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 847,
+ "nodeType": "ExpressionStatement",
+ "src": "3877:27:3"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 853,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 848,
+ "name": "availableUnstakeAmount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 511,
+ "src": "3911:22:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 851,
+ "name": "amount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 834,
+ "src": "3963:6:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 849,
+ "name": "availableUnstakeAmount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 511,
+ "src": "3936:22:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 850,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 1386,
+ "src": "3936:26:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 852,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3936:34:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "3911:59:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 854,
+ "nodeType": "ExpressionStatement",
+ "src": "3911:59:3"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 856,
+ "name": "amount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 834,
+ "src": "3992:6:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 855,
+ "name": "NodeVested",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 537,
+ "src": "3981:10:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
+ "typeString": "function (uint256)"
+ }
+ },
+ "id": 857,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3981:18:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 858,
+ "nodeType": "EmitStatement",
+ "src": "3976:23:3"
+ }
+ ]
+ },
+ "documentation": "@dev vest",
+ "id": 860,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 837,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 836,
+ "name": "onlyFoundation",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 22,
+ "src": "3841:14:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "3841:14:3"
+ },
+ {
+ "arguments": null,
+ "id": 839,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 838,
+ "name": "onlyRegistered",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 568,
+ "src": "3856:14:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "3856:14:3"
+ }
+ ],
+ "name": "vest",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 835,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 834,
+ "name": "amount",
+ "nodeType": "VariableDeclaration",
+ "scope": 860,
+ "src": "3818:14:3",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 833,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "3818:7:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "3817:16:3"
+ },
+ "returnParameters": {
+ "id": 840,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "3871:0:3"
+ },
+ "scope": 861,
+ "src": "3804:200:3",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ }
+ ],
+ "scope": 862,
+ "src": "212:3794:3"
+ }
+ ],
+ "src": "0:4007:3"
+ },
+ "legacyAST": {
+ "absolutePath": "/Users/aitjcize/Work/tangerine-network/node-staker/contracts/NodeStaker.sol",
+ "exportedSymbols": {
+ "NodeStaker": [
+ 861
+ ]
+ },
+ "id": 862,
+ "nodeType": "SourceUnit",
+ "nodes": [
+ {
+ "id": 489,
+ "literals": [
+ "solidity",
+ "^",
+ "0.5",
+ ".11"
+ ],
+ "nodeType": "PragmaDirective",
+ "src": "0:24:3"
+ },
+ {
+ "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol",
+ "file": "openzeppelin-solidity/contracts/math/SafeMath.sol",
+ "id": 490,
+ "nodeType": "ImportDirective",
+ "scope": 862,
+ "sourceUnit": 1408,
+ "src": "26:59:3",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "openzeppelin-solidity/contracts/ownership/Ownable.sol",
+ "file": "openzeppelin-solidity/contracts/ownership/Ownable.sol",
+ "id": 491,
+ "nodeType": "ImportDirective",
+ "scope": 862,
+ "sourceUnit": 1517,
+ "src": "86:63:3",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "/Users/aitjcize/Work/tangerine-network/node-staker/contracts/Governance.sol",
+ "file": "./Governance.sol",
+ "id": 492,
+ "nodeType": "ImportDirective",
+ "scope": 862,
+ "sourceUnit": 431,
+ "src": "150:26:3",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "/Users/aitjcize/Work/tangerine-network/node-staker/contracts/FoundationOwnable.sol",
+ "file": "./FoundationOwnable.sol",
+ "id": 493,
+ "nodeType": "ImportDirective",
+ "scope": 862,
+ "sourceUnit": 47,
+ "src": "177:33:3",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "baseContracts": [
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 494,
+ "name": "Ownable",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 1516,
+ "src": "235:7:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Ownable_$1516",
+ "typeString": "contract Ownable"
+ }
+ },
+ "id": 495,
+ "nodeType": "InheritanceSpecifier",
+ "src": "235:7:3"
+ },
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 496,
+ "name": "FoundationOwnable",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 46,
+ "src": "244:17:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_FoundationOwnable_$46",
+ "typeString": "contract FoundationOwnable"
+ }
+ },
+ "id": 497,
+ "nodeType": "InheritanceSpecifier",
+ "src": "244:17:3"
+ }
+ ],
+ "contractDependencies": [
+ 46,
+ 1516
+ ],
+ "contractKind": "contract",
+ "documentation": null,
+ "fullyImplemented": true,
+ "id": 861,
+ "linearizedBaseContracts": [
+ 861,
+ 46,
+ 1516
+ ],
+ "name": "NodeStaker",
+ "nodeType": "ContractDefinition",
+ "nodes": [
+ {
+ "id": 500,
+ "libraryName": {
+ "contractScope": null,
+ "id": 498,
+ "name": "SafeMath",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 1407,
+ "src": "273:8:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_SafeMath_$1407",
+ "typeString": "library SafeMath"
+ }
+ },
+ "nodeType": "UsingForDirective",
+ "src": "267:27:3",
+ "typeName": {
+ "id": 499,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "286:7:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ },
+ {
+ "constant": false,
+ "id": 505,
+ "name": "gov",
+ "nodeType": "VariableDeclaration",
+ "scope": 861,
+ "src": "298:71:3",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Governance_$430",
+ "typeString": "contract Governance"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 501,
+ "name": "Governance",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 430,
+ "src": "298:10:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Governance_$430",
+ "typeString": "contract Governance"
+ }
+ },
+ "value": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "307832343646634445353835383165323735346632313541353233433037313843344246633830343146",
+ "id": 503,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "326:42:3",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ "value": "0x246FcDE58581e2754f215A523C0718C4BFc8041F"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ ],
+ "id": 502,
+ "name": "Governance",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 430,
+ "src": "315:10:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_contract$_Governance_$430_$",
+ "typeString": "type(contract Governance)"
+ }
+ },
+ "id": 504,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "315:54:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Governance_$430",
+ "typeString": "contract Governance"
+ }
+ },
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 507,
+ "name": "registered",
+ "nodeType": "VariableDeclaration",
+ "scope": 861,
+ "src": "373:22:3",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 506,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "373:4:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 509,
+ "name": "vested",
+ "nodeType": "VariableDeclaration",
+ "scope": 861,
+ "src": "399:21:3",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 508,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "399:7:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 511,
+ "name": "availableUnstakeAmount",
+ "nodeType": "VariableDeclaration",
+ "scope": 861,
+ "src": "424:37:3",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 510,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "424:7:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 527,
+ "name": "NodeRegister",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 526,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 513,
+ "indexed": false,
+ "name": "sender",
+ "nodeType": "VariableDeclaration",
+ "scope": 527,
+ "src": "527:14:3",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 512,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "527:7:3",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 515,
+ "indexed": false,
+ "name": "publicKey",
+ "nodeType": "VariableDeclaration",
+ "scope": 527,
+ "src": "547:15:3",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 514,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "547:5:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 517,
+ "indexed": false,
+ "name": "name",
+ "nodeType": "VariableDeclaration",
+ "scope": 527,
+ "src": "568:11:3",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 516,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "568:6:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 519,
+ "indexed": false,
+ "name": "email",
+ "nodeType": "VariableDeclaration",
+ "scope": 527,
+ "src": "585:12:3",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 518,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "585:6:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 521,
+ "indexed": false,
+ "name": "location",
+ "nodeType": "VariableDeclaration",
+ "scope": 527,
+ "src": "603:15:3",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 520,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "603:6:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 523,
+ "indexed": false,
+ "name": "url",
+ "nodeType": "VariableDeclaration",
+ "scope": 527,
+ "src": "624:10:3",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 522,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "624:6:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 525,
+ "indexed": false,
+ "name": "value",
+ "nodeType": "VariableDeclaration",
+ "scope": 527,
+ "src": "640:13:3",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 524,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "640:7:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "521:136:3"
+ },
+ "src": "503:155:3"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 533,
+ "name": "NodeDeposited",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 532,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 529,
+ "indexed": false,
+ "name": "sender",
+ "nodeType": "VariableDeclaration",
+ "scope": 533,
+ "src": "681:14:3",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 528,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "681:7:3",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 531,
+ "indexed": false,
+ "name": "amount",
+ "nodeType": "VariableDeclaration",
+ "scope": 533,
+ "src": "697:14:3",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 530,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "697:7:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "680:32:3"
+ },
+ "src": "661:52:3"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 537,
+ "name": "NodeVested",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 536,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 535,
+ "indexed": false,
+ "name": "amount",
+ "nodeType": "VariableDeclaration",
+ "scope": 537,
+ "src": "733:14:3",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 534,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "733:7:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "732:16:3"
+ },
+ "src": "716:33:3"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 543,
+ "name": "NodeWithdrawn",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 542,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 539,
+ "indexed": false,
+ "name": "owner",
+ "nodeType": "VariableDeclaration",
+ "scope": 543,
+ "src": "772:13:3",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 538,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "772:7:3",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 541,
+ "indexed": false,
+ "name": "amount",
+ "nodeType": "VariableDeclaration",
+ "scope": 543,
+ "src": "787:14:3",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 540,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "787:7:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "771:31:3"
+ },
+ "src": "752:51:3"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 549,
+ "name": "NodePublicKeyReplaced",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 548,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 545,
+ "indexed": false,
+ "name": "oldKey",
+ "nodeType": "VariableDeclaration",
+ "scope": 549,
+ "src": "834:12:3",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 544,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "834:5:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 547,
+ "indexed": false,
+ "name": "newKey",
+ "nodeType": "VariableDeclaration",
+ "scope": 549,
+ "src": "848:12:3",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 546,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "848:5:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "833:28:3"
+ },
+ "src": "806:56:3"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 553,
+ "name": "UnstakedByFoundation",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 552,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 551,
+ "indexed": false,
+ "name": "amount",
+ "nodeType": "VariableDeclaration",
+ "scope": 553,
+ "src": "892:14:3",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 550,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "892:7:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "891:16:3"
+ },
+ "src": "865:43:3"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 559,
+ "name": "OwnershipTranferedByFoundation",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 558,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 555,
+ "indexed": false,
+ "name": "from",
+ "nodeType": "VariableDeclaration",
+ "scope": 559,
+ "src": "948:12:3",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 554,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "948:7:3",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 557,
+ "indexed": false,
+ "name": "to",
+ "nodeType": "VariableDeclaration",
+ "scope": 559,
+ "src": "962:10:3",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 556,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "962:7:3",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "947:26:3"
+ },
+ "src": "911:63:3"
+ },
+ {
+ "body": {
+ "id": 567,
+ "nodeType": "Block",
+ "src": "1050:59:3",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 562,
+ "name": "registered",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 507,
+ "src": "1064:10:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "6e6f74207265676973746572656420796574",
+ "id": 563,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "1076:20:3",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_c16aaa8f3b2fb22af6aabfa7f0392eed554bc4af8ac4b02f0e9cb83f01994d2b",
+ "typeString": "literal_string \"not registered yet\""
+ },
+ "value": "not registered yet"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_c16aaa8f3b2fb22af6aabfa7f0392eed554bc4af8ac4b02f0e9cb83f01994d2b",
+ "typeString": "literal_string \"not registered yet\""
+ }
+ ],
+ "id": 561,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 1534,
+ 1535
+ ],
+ "referencedDeclaration": 1535,
+ "src": "1056:7:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 564,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1056:41:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 565,
+ "nodeType": "ExpressionStatement",
+ "src": "1056:41:3"
+ },
+ {
+ "id": 566,
+ "nodeType": "PlaceholderStatement",
+ "src": "1103:1:3"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 568,
+ "name": "onlyRegistered",
+ "nodeType": "ModifierDefinition",
+ "parameters": {
+ "id": 560,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "1047:2:3"
+ },
+ "src": "1024:85:3",
+ "visibility": "internal"
+ },
+ {
+ "body": {
+ "id": 578,
+ "nodeType": "Block",
+ "src": "1240:52:3",
+ "statements": [
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 572,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "1265:3:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 573,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "1265:10:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 574,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "1277:3:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 575,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "value",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "1277:9:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 571,
+ "name": "NodeDeposited",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 533,
+ "src": "1251:13:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
+ "typeString": "function (address,uint256)"
+ }
+ },
+ "id": 576,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1251:36:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 577,
+ "nodeType": "EmitStatement",
+ "src": "1246:41:3"
+ }
+ ]
+ },
+ "documentation": "@notice funds from non-governance source will be prorated refund to foundation",
+ "id": 579,
+ "implemented": true,
+ "kind": "fallback",
+ "modifiers": [],
+ "name": "",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 569,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "1220:2:3"
+ },
+ "returnParameters": {
+ "id": 570,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "1240:0:3"
+ },
+ "scope": 861,
+ "src": "1211:81:3",
+ "stateMutability": "payable",
+ "superFunction": null,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 608,
+ "nodeType": "Block",
+ "src": "1428:158:3",
+ "statements": [
+ {
+ "assignments": [
+ 585
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 585,
+ "name": "offset",
+ "nodeType": "VariableDeclaration",
+ "scope": 608,
+ "src": "1434:14:3",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 584,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1434:7:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 594,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 590,
+ "name": "this",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1555,
+ "src": "1492:4:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_NodeStaker_$861",
+ "typeString": "contract NodeStaker"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_contract$_NodeStaker_$861",
+ "typeString": "contract NodeStaker"
+ }
+ ],
+ "id": 589,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "1484:7:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 591,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1484:13:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 587,
+ "name": "gov",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 505,
+ "src": "1459:3:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Governance_$430",
+ "typeString": "contract Governance"
+ }
+ },
+ "id": 588,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "nodesOffsetByAddress",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 89,
+ "src": "1459:24:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_int256_$",
+ "typeString": "function (address) view external returns (int256)"
+ }
+ },
+ "id": 592,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1459:39:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_int256",
+ "typeString": "int256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_int256",
+ "typeString": "int256"
+ }
+ ],
+ "id": 586,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "1451:7:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_uint256_$",
+ "typeString": "type(uint256)"
+ },
+ "typeName": "uint256"
+ },
+ "id": 593,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1451:48:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "1434:65:3"
+ },
+ {
+ "assignments": [
+ 596
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 596,
+ "name": "staked",
+ "nodeType": "VariableDeclaration",
+ "scope": 608,
+ "src": "1505:14:3",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 595,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1505:7:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 597,
+ "initialValue": null,
+ "nodeType": "VariableDeclarationStatement",
+ "src": "1505:14:3"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 604,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "components": [
+ null,
+ null,
+ {
+ "argumentTypes": null,
+ "id": 598,
+ "name": "staked",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 596,
+ "src": "1528:6:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null
+ ],
+ "id": 599,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "TupleExpression",
+ "src": "1525:17:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$__$_t_uint256_$__$__$__$__$__$__$__$",
+ "typeString": "tuple(,,uint256,,,,,,,)"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 602,
+ "name": "offset",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 585,
+ "src": "1555:6:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 600,
+ "name": "gov",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 505,
+ "src": "1545:3:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Governance_$430",
+ "typeString": "contract Governance"
+ }
+ },
+ "id": 601,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "nodes",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 85,
+ "src": "1545:9:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_address_$_t_bytes_memory_$_t_uint256_$_t_uint256_$_t_string_memory_$_t_string_memory_$_t_string_memory_$_t_string_memory_$_t_uint256_$_t_uint256_$",
+ "typeString": "function (uint256) view external returns (address,bytes memory,uint256,uint256,string memory,string memory,string memory,string memory,uint256,uint256)"
+ }
+ },
+ "id": 603,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1545:17:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$_t_address_$_t_bytes_memory_$_t_uint256_$_t_uint256_$_t_string_memory_$_t_string_memory_$_t_string_memory_$_t_string_memory_$_t_uint256_$_t_uint256_$",
+ "typeString": "tuple(address,bytes memory,uint256,uint256,string memory,string memory,string memory,string memory,uint256,uint256)"
+ }
+ },
+ "src": "1525:37:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 605,
+ "nodeType": "ExpressionStatement",
+ "src": "1525:37:3"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 606,
+ "name": "staked",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 596,
+ "src": "1575:6:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "functionReturnParameters": 583,
+ "id": 607,
+ "nodeType": "Return",
+ "src": "1568:13:3"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 609,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "getStakedAmount",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 580,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "1395:2:3"
+ },
+ "returnParameters": {
+ "id": 583,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 582,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 609,
+ "src": "1419:7:3",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 581,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1419:7:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "1418:9:3"
+ },
+ "scope": 861,
+ "src": "1371:215:3",
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 638,
+ "nodeType": "Block",
+ "src": "1649:164:3",
+ "statements": [
+ {
+ "assignments": [
+ 615
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 615,
+ "name": "offset",
+ "nodeType": "VariableDeclaration",
+ "scope": 638,
+ "src": "1655:14:3",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 614,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1655:7:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 624,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 620,
+ "name": "this",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1555,
+ "src": "1713:4:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_NodeStaker_$861",
+ "typeString": "contract NodeStaker"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_contract$_NodeStaker_$861",
+ "typeString": "contract NodeStaker"
+ }
+ ],
+ "id": 619,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "1705:7:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 621,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1705:13:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 617,
+ "name": "gov",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 505,
+ "src": "1680:3:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Governance_$430",
+ "typeString": "contract Governance"
+ }
+ },
+ "id": 618,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "nodesOffsetByAddress",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 89,
+ "src": "1680:24:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_int256_$",
+ "typeString": "function (address) view external returns (int256)"
+ }
+ },
+ "id": 622,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1680:39:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_int256",
+ "typeString": "int256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_int256",
+ "typeString": "int256"
+ }
+ ],
+ "id": 616,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "1672:7:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_uint256_$",
+ "typeString": "type(uint256)"
+ },
+ "typeName": "uint256"
+ },
+ "id": 623,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1672:48:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "1655:65:3"
+ },
+ {
+ "assignments": [
+ 626
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 626,
+ "name": "unstaked",
+ "nodeType": "VariableDeclaration",
+ "scope": 638,
+ "src": "1726:16:3",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 625,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1726:7:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 627,
+ "initialValue": null,
+ "nodeType": "VariableDeclarationStatement",
+ "src": "1726:16:3"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 634,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "components": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ {
+ "argumentTypes": null,
+ "id": 628,
+ "name": "unstaked",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 626,
+ "src": "1757:8:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ null
+ ],
+ "id": 629,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "TupleExpression",
+ "src": "1748:19:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$__$__$__$__$__$__$__$_t_uint256_$__$",
+ "typeString": "tuple(,,,,,,,,uint256,)"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 632,
+ "name": "offset",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 615,
+ "src": "1780:6:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 630,
+ "name": "gov",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 505,
+ "src": "1770:3:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Governance_$430",
+ "typeString": "contract Governance"
+ }
+ },
+ "id": 631,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "nodes",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 85,
+ "src": "1770:9:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_address_$_t_bytes_memory_$_t_uint256_$_t_uint256_$_t_string_memory_$_t_string_memory_$_t_string_memory_$_t_string_memory_$_t_uint256_$_t_uint256_$",
+ "typeString": "function (uint256) view external returns (address,bytes memory,uint256,uint256,string memory,string memory,string memory,string memory,uint256,uint256)"
+ }
+ },
+ "id": 633,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1770:17:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$_t_address_$_t_bytes_memory_$_t_uint256_$_t_uint256_$_t_string_memory_$_t_string_memory_$_t_string_memory_$_t_string_memory_$_t_uint256_$_t_uint256_$",
+ "typeString": "tuple(address,bytes memory,uint256,uint256,string memory,string memory,string memory,string memory,uint256,uint256)"
+ }
+ },
+ "src": "1748:39:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 635,
+ "nodeType": "ExpressionStatement",
+ "src": "1748:39:3"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 636,
+ "name": "unstaked",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 626,
+ "src": "1800:8:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "functionReturnParameters": 613,
+ "id": 637,
+ "nodeType": "Return",
+ "src": "1793:15:3"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 639,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "getUnstakedAmount",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 610,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "1616:2:3"
+ },
+ "returnParameters": {
+ "id": 613,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 612,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 639,
+ "src": "1640:7:3",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 611,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1640:7:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "1639:9:3"
+ },
+ "scope": 861,
+ "src": "1590:223:3",
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 695,
+ "nodeType": "Block",
+ "src": "2115:272:3",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 656,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "UnaryOperation",
+ "operator": "!",
+ "prefix": true,
+ "src": "2129:11:3",
+ "subExpression": {
+ "argumentTypes": null,
+ "id": 655,
+ "name": "registered",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 507,
+ "src": "2130:10:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "616c72656164792072656769737465726564",
+ "id": 657,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "2142:20:3",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_269c06100417d6799f278320f8bfa70884ed5db37cbbb03507b2629ec69f83d0",
+ "typeString": "literal_string \"already registered\""
+ },
+ "value": "already registered"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_269c06100417d6799f278320f8bfa70884ed5db37cbbb03507b2629ec69f83d0",
+ "typeString": "literal_string \"already registered\""
+ }
+ ],
+ "id": 654,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 1534,
+ 1535
+ ],
+ "referencedDeclaration": 1535,
+ "src": "2121:7:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 658,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2121:42:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 659,
+ "nodeType": "ExpressionStatement",
+ "src": "2121:42:3"
+ },
+ {
+ "assignments": [
+ 661
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 661,
+ "name": "minStake",
+ "nodeType": "VariableDeclaration",
+ "scope": 695,
+ "src": "2169:16:3",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 660,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "2169:7:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 665,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "expression": {
+ "argumentTypes": null,
+ "id": 662,
+ "name": "gov",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 505,
+ "src": "2188:3:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Governance_$430",
+ "typeString": "contract Governance"
+ }
+ },
+ "id": 663,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "minStake",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 142,
+ "src": "2188:12:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
+ "typeString": "function () view external returns (uint256)"
+ }
+ },
+ "id": 664,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2188:14:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "2169:33:3"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 673,
+ "name": "publicKey",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 641,
+ "src": "2237:9:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 674,
+ "name": "name",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 643,
+ "src": "2248:4:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 675,
+ "name": "email",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 645,
+ "src": "2254:5:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 676,
+ "name": "location",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 647,
+ "src": "2261:8:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 677,
+ "name": "url",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 649,
+ "src": "2271:3:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ },
+ {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ },
+ {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ },
+ {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ },
+ {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ }
+ ],
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 671,
+ "name": "minStake",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 661,
+ "src": "2227:8:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 666,
+ "name": "gov",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 505,
+ "src": "2208:3:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Governance_$430",
+ "typeString": "contract Governance"
+ }
+ },
+ "id": 669,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "register",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 377,
+ "src": "2208:12:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_external_payable$_t_bytes_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bytes memory,string memory,string memory,string memory,string memory) payable external"
+ }
+ },
+ "id": 670,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "value",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "2208:18:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_setvalue_pure$_t_uint256_$returns$_t_function_external_payable$_t_bytes_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$value_$",
+ "typeString": "function (uint256) pure returns (function (bytes memory,string memory,string memory,string memory,string memory) payable external)"
+ }
+ },
+ "id": 672,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2208:28:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_external_payable$_t_bytes_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$value",
+ "typeString": "function (bytes memory,string memory,string memory,string memory,string memory) payable external"
+ }
+ },
+ "id": 678,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2208:67:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 679,
+ "nodeType": "ExpressionStatement",
+ "src": "2208:67:3"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 682,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 680,
+ "name": "registered",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 507,
+ "src": "2281:10:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "hexValue": "74727565",
+ "id": 681,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "bool",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "2294:4:3",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "value": "true"
+ },
+ "src": "2281:17:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "id": 683,
+ "nodeType": "ExpressionStatement",
+ "src": "2281:17:3"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 685,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "2322:3:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 686,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "2322:10:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 687,
+ "name": "publicKey",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 641,
+ "src": "2334:9:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 688,
+ "name": "name",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 643,
+ "src": "2345:4:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 689,
+ "name": "email",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 645,
+ "src": "2351:5:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 690,
+ "name": "location",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 647,
+ "src": "2358:8:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 691,
+ "name": "url",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 649,
+ "src": "2368:3:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 692,
+ "name": "minStake",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 661,
+ "src": "2373:8:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ },
+ {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ },
+ {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ },
+ {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ },
+ {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 684,
+ "name": "NodeRegister",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 527,
+ "src": "2309:12:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint256_$returns$__$",
+ "typeString": "function (address,bytes memory,string memory,string memory,string memory,string memory,uint256)"
+ }
+ },
+ "id": 693,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2309:73:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 694,
+ "nodeType": "EmitStatement",
+ "src": "2304:78:3"
+ }
+ ]
+ },
+ "documentation": "@dev register a node",
+ "id": 696,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 652,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 651,
+ "name": "onlyOwner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1450,
+ "src": "2105:9:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "2105:9:3"
+ }
+ ],
+ "name": "register",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 650,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 641,
+ "name": "publicKey",
+ "nodeType": "VariableDeclaration",
+ "scope": 696,
+ "src": "1971:22:3",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 640,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "1971:5:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 643,
+ "name": "name",
+ "nodeType": "VariableDeclaration",
+ "scope": 696,
+ "src": "1999:18:3",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 642,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "1999:6:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 645,
+ "name": "email",
+ "nodeType": "VariableDeclaration",
+ "scope": 696,
+ "src": "2023:19:3",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 644,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "2023:6:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 647,
+ "name": "location",
+ "nodeType": "VariableDeclaration",
+ "scope": 696,
+ "src": "2048:22:3",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 646,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "2048:6:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 649,
+ "name": "url",
+ "nodeType": "VariableDeclaration",
+ "scope": 696,
+ "src": "2076:17:3",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 648,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "2076:6:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "1965:132:3"
+ },
+ "returnParameters": {
+ "id": 653,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "2115:0:3"
+ },
+ "scope": 861,
+ "src": "1948:439:3",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 733,
+ "nodeType": "Block",
+ "src": "2484:170:3",
+ "statements": [
+ {
+ "condition": {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "expression": {
+ "argumentTypes": null,
+ "id": 703,
+ "name": "gov",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 505,
+ "src": "2494:3:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Governance_$430",
+ "typeString": "contract Governance"
+ }
+ },
+ "id": 704,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "withdrawable",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 429,
+ "src": "2494:16:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_external_view$__$returns$_t_bool_$",
+ "typeString": "function () view external returns (bool)"
+ }
+ },
+ "id": 705,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2494:18:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": null,
+ "id": 711,
+ "nodeType": "IfStatement",
+ "src": "2490:38:3",
+ "trueBody": {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "expression": {
+ "argumentTypes": null,
+ "id": 706,
+ "name": "gov",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 505,
+ "src": "2514:3:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Governance_$430",
+ "typeString": "contract Governance"
+ }
+ },
+ "id": 708,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "withdraw",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 423,
+ "src": "2514:12:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_external_nonpayable$__$returns$__$",
+ "typeString": "function () external"
+ }
+ },
+ "id": 709,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2514:14:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 710,
+ "nodeType": "ExpressionStatement",
+ "src": "2514:14:3"
+ }
+ },
+ {
+ "assignments": [
+ 713
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 713,
+ "name": "amount",
+ "nodeType": "VariableDeclaration",
+ "scope": 733,
+ "src": "2534:14:3",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 712,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "2534:7:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 718,
+ "initialValue": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 715,
+ "name": "this",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1555,
+ "src": "2559:4:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_NodeStaker_$861",
+ "typeString": "contract NodeStaker"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_contract$_NodeStaker_$861",
+ "typeString": "contract NodeStaker"
+ }
+ ],
+ "id": 714,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "2551:7:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 716,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2551:13:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "id": 717,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "balance",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "2551:21:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "2534:38:3"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 724,
+ "name": "amount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 713,
+ "src": "2598:6:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 719,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "2578:3:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 722,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "2578:10:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "id": 723,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "transfer",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "2578:19:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$",
+ "typeString": "function (uint256)"
+ }
+ },
+ "id": 725,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2578:27:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 726,
+ "nodeType": "ExpressionStatement",
+ "src": "2578:27:3"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 728,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "2630:3:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 729,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "2630:10:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 730,
+ "name": "amount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 713,
+ "src": "2642:6:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 727,
+ "name": "NodeWithdrawn",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 543,
+ "src": "2616:13:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
+ "typeString": "function (address,uint256)"
+ }
+ },
+ "id": 731,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2616:33:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 732,
+ "nodeType": "EmitStatement",
+ "src": "2611:38:3"
+ }
+ ]
+ },
+ "documentation": "@dev withdraw balance",
+ "id": 734,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 699,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 698,
+ "name": "onlyOwner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1450,
+ "src": "2459:9:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "2459:9:3"
+ },
+ {
+ "arguments": null,
+ "id": 701,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 700,
+ "name": "onlyRegistered",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 568,
+ "src": "2469:14:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "2469:14:3"
+ }
+ ],
+ "name": "withdraw",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 697,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "2449:2:3"
+ },
+ "returnParameters": {
+ "id": 702,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "2484:0:3"
+ },
+ "scope": 861,
+ "src": "2432:222:3",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 776,
+ "nodeType": "Block",
+ "src": "2786:224:3",
+ "statements": [
+ {
+ "assignments": [
+ 744
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 744,
+ "name": "oldKey",
+ "nodeType": "VariableDeclaration",
+ "scope": 776,
+ "src": "2792:19:3",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 743,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "2792:5:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 745,
+ "initialValue": null,
+ "nodeType": "VariableDeclarationStatement",
+ "src": "2792:19:3"
+ },
+ {
+ "assignments": [
+ 747
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 747,
+ "name": "offset",
+ "nodeType": "VariableDeclaration",
+ "scope": 776,
+ "src": "2817:14:3",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 746,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "2817:7:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 756,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 752,
+ "name": "this",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1555,
+ "src": "2875:4:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_NodeStaker_$861",
+ "typeString": "contract NodeStaker"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_contract$_NodeStaker_$861",
+ "typeString": "contract NodeStaker"
+ }
+ ],
+ "id": 751,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "2867:7:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 753,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2867:13:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 749,
+ "name": "gov",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 505,
+ "src": "2842:3:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Governance_$430",
+ "typeString": "contract Governance"
+ }
+ },
+ "id": 750,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "nodesOffsetByAddress",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 89,
+ "src": "2842:24:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_int256_$",
+ "typeString": "function (address) view external returns (int256)"
+ }
+ },
+ "id": 754,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2842:39:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_int256",
+ "typeString": "int256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_int256",
+ "typeString": "int256"
+ }
+ ],
+ "id": 748,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "2834:7:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_uint256_$",
+ "typeString": "type(uint256)"
+ },
+ "typeName": "uint256"
+ },
+ "id": 755,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2834:48:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "2817:65:3"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 763,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "components": [
+ null,
+ {
+ "argumentTypes": null,
+ "id": 757,
+ "name": "oldKey",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 744,
+ "src": "2890:6:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ },
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null
+ ],
+ "id": 758,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "TupleExpression",
+ "src": "2888:17:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$_t_bytes_memory_ptr_$__$__$__$__$__$__$__$__$",
+ "typeString": "tuple(,bytes memory,,,,,,,,)"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 761,
+ "name": "offset",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 747,
+ "src": "2918:6:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 759,
+ "name": "gov",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 505,
+ "src": "2908:3:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Governance_$430",
+ "typeString": "contract Governance"
+ }
+ },
+ "id": 760,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "nodes",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 85,
+ "src": "2908:9:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_address_$_t_bytes_memory_$_t_uint256_$_t_uint256_$_t_string_memory_$_t_string_memory_$_t_string_memory_$_t_string_memory_$_t_uint256_$_t_uint256_$",
+ "typeString": "function (uint256) view external returns (address,bytes memory,uint256,uint256,string memory,string memory,string memory,string memory,uint256,uint256)"
+ }
+ },
+ "id": 762,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2908:17:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$_t_address_$_t_bytes_memory_$_t_uint256_$_t_uint256_$_t_string_memory_$_t_string_memory_$_t_string_memory_$_t_string_memory_$_t_uint256_$_t_uint256_$",
+ "typeString": "tuple(address,bytes memory,uint256,uint256,string memory,string memory,string memory,string memory,uint256,uint256)"
+ }
+ },
+ "src": "2888:37:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 764,
+ "nodeType": "ExpressionStatement",
+ "src": "2888:37:3"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 768,
+ "name": "key",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 736,
+ "src": "2956:3:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 765,
+ "name": "gov",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 505,
+ "src": "2931:3:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Governance_$430",
+ "typeString": "contract Governance"
+ }
+ },
+ "id": 767,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "replaceNodePublicKey",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 383,
+ "src": "2931:24:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$",
+ "typeString": "function (bytes memory) external"
+ }
+ },
+ "id": 769,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2931:29:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 770,
+ "nodeType": "ExpressionStatement",
+ "src": "2931:29:3"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 772,
+ "name": "oldKey",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 744,
+ "src": "2993:6:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 773,
+ "name": "key",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 736,
+ "src": "3001:3:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ },
+ {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ ],
+ "id": 771,
+ "name": "NodePublicKeyReplaced",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 549,
+ "src": "2971:21:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
+ "typeString": "function (bytes memory,bytes memory)"
+ }
+ },
+ "id": 774,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2971:34:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 775,
+ "nodeType": "EmitStatement",
+ "src": "2966:39:3"
+ }
+ ]
+ },
+ "documentation": "@dev replace node public key",
+ "id": 777,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 739,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 738,
+ "name": "onlyOwner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1450,
+ "src": "2761:9:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "2761:9:3"
+ },
+ {
+ "arguments": null,
+ "id": 741,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 740,
+ "name": "onlyRegistered",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 568,
+ "src": "2771:14:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "2771:14:3"
+ }
+ ],
+ "name": "replaceNodePublicKey",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 737,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 736,
+ "name": "key",
+ "nodeType": "VariableDeclaration",
+ "scope": 777,
+ "src": "2736:16:3",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 735,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "2736:5:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "2735:18:3"
+ },
+ "returnParameters": {
+ "id": 742,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "2786:0:3"
+ },
+ "scope": 861,
+ "src": "2706:304:3",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 798,
+ "nodeType": "Block",
+ "src": "3235:132:3",
+ "statements": [
+ {
+ "assignments": [
+ 785
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 785,
+ "name": "oldOwner",
+ "nodeType": "VariableDeclaration",
+ "scope": 798,
+ "src": "3241:16:3",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 784,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "3241:7:3",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 788,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 786,
+ "name": "owner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1441,
+ "src": "3260:5:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
+ "typeString": "function () view returns (address)"
+ }
+ },
+ "id": 787,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3260:7:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "3241:26:3"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 790,
+ "name": "newOwner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 779,
+ "src": "3292:8:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 789,
+ "name": "_transferOwnership",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1515,
+ "src": "3273:18:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
+ "typeString": "function (address)"
+ }
+ },
+ "id": 791,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3273:28:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 792,
+ "nodeType": "ExpressionStatement",
+ "src": "3273:28:3"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 794,
+ "name": "oldOwner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 785,
+ "src": "3343:8:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 795,
+ "name": "newOwner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 779,
+ "src": "3353:8:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 793,
+ "name": "OwnershipTranferedByFoundation",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 559,
+ "src": "3312:30:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
+ "typeString": "function (address,address)"
+ }
+ },
+ "id": 796,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3312:50:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 797,
+ "nodeType": "EmitStatement",
+ "src": "3307:55:3"
+ }
+ ]
+ },
+ "documentation": "@dev transfer node ownership",
+ "id": 799,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 782,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 781,
+ "name": "onlyFoundation",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 22,
+ "src": "3220:14:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "3220:14:3"
+ }
+ ],
+ "name": "transferOwnershipByFoundation",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 780,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 779,
+ "name": "newOwner",
+ "nodeType": "VariableDeclaration",
+ "scope": 799,
+ "src": "3195:16:3",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 778,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "3195:7:3",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "3194:18:3"
+ },
+ "returnParameters": {
+ "id": 783,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "3235:0:3"
+ },
+ "scope": 861,
+ "src": "3156:211:3",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 831,
+ "nodeType": "Block",
+ "src": "3544:227:3",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 811,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 809,
+ "name": "amount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 801,
+ "src": "3558:6:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "<=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 810,
+ "name": "availableUnstakeAmount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 511,
+ "src": "3568:22:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "3558:32:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "756e7374616b696e6720616d6f756e742073686f756c64206e6f742062652067726561746572207468616e20617661696c61626c65556e7374616b65416d6f756e742e",
+ "id": 812,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "3592:69:3",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_b7d94a053a83410c106ebcc410fc4fe23df1b7ed4a1d6d6b32a2118eb0e69c13",
+ "typeString": "literal_string \"unstaking amount should not be greater than availableUnstakeAmount.\""
+ },
+ "value": "unstaking amount should not be greater than availableUnstakeAmount."
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_b7d94a053a83410c106ebcc410fc4fe23df1b7ed4a1d6d6b32a2118eb0e69c13",
+ "typeString": "literal_string \"unstaking amount should not be greater than availableUnstakeAmount.\""
+ }
+ ],
+ "id": 808,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 1534,
+ 1535
+ ],
+ "referencedDeclaration": 1535,
+ "src": "3550:7:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 813,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3550:112:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 814,
+ "nodeType": "ExpressionStatement",
+ "src": "3550:112:3"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 818,
+ "name": "amount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 801,
+ "src": "3695:6:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 815,
+ "name": "availableUnstakeAmount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 511,
+ "src": "3668:22:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 817,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sub",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 1362,
+ "src": "3668:26:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 819,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3668:34:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 820,
+ "nodeType": "ExpressionStatement",
+ "src": "3668:34:3"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 824,
+ "name": "amount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 801,
+ "src": "3720:6:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 821,
+ "name": "gov",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 505,
+ "src": "3708:3:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Governance_$430",
+ "typeString": "contract Governance"
+ }
+ },
+ "id": 823,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "unstake",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 407,
+ "src": "3708:11:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
+ "typeString": "function (uint256) external"
+ }
+ },
+ "id": 825,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3708:19:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 826,
+ "nodeType": "ExpressionStatement",
+ "src": "3708:19:3"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 828,
+ "name": "amount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 801,
+ "src": "3759:6:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 827,
+ "name": "UnstakedByFoundation",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 553,
+ "src": "3738:20:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
+ "typeString": "function (uint256)"
+ }
+ },
+ "id": 829,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3738:28:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 830,
+ "nodeType": "EmitStatement",
+ "src": "3733:33:3"
+ }
+ ]
+ },
+ "documentation": "@dev unstake by foundation\n@notice only can unstake vested amount",
+ "id": 832,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 804,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 803,
+ "name": "onlyFoundation",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 22,
+ "src": "3514:14:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "3514:14:3"
+ },
+ {
+ "arguments": null,
+ "id": 806,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 805,
+ "name": "onlyRegistered",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 568,
+ "src": "3529:14:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "3529:14:3"
+ }
+ ],
+ "name": "unstakeByFoundation",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 802,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 801,
+ "name": "amount",
+ "nodeType": "VariableDeclaration",
+ "scope": 832,
+ "src": "3491:14:3",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 800,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "3491:7:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "3490:16:3"
+ },
+ "returnParameters": {
+ "id": 807,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "3544:0:3"
+ },
+ "scope": 861,
+ "src": "3462:309:3",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 859,
+ "nodeType": "Block",
+ "src": "3871:133:3",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 846,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 841,
+ "name": "vested",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 509,
+ "src": "3877:6:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 844,
+ "name": "amount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 834,
+ "src": "3897:6:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 842,
+ "name": "vested",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 509,
+ "src": "3886:6:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 843,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 1386,
+ "src": "3886:10:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 845,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3886:18:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "3877:27:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 847,
+ "nodeType": "ExpressionStatement",
+ "src": "3877:27:3"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 853,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 848,
+ "name": "availableUnstakeAmount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 511,
+ "src": "3911:22:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 851,
+ "name": "amount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 834,
+ "src": "3963:6:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 849,
+ "name": "availableUnstakeAmount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 511,
+ "src": "3936:22:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 850,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 1386,
+ "src": "3936:26:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 852,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3936:34:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "3911:59:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 854,
+ "nodeType": "ExpressionStatement",
+ "src": "3911:59:3"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 856,
+ "name": "amount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 834,
+ "src": "3992:6:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 855,
+ "name": "NodeVested",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 537,
+ "src": "3981:10:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
+ "typeString": "function (uint256)"
+ }
+ },
+ "id": 857,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3981:18:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 858,
+ "nodeType": "EmitStatement",
+ "src": "3976:23:3"
+ }
+ ]
+ },
+ "documentation": "@dev vest",
+ "id": 860,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 837,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 836,
+ "name": "onlyFoundation",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 22,
+ "src": "3841:14:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "3841:14:3"
+ },
+ {
+ "arguments": null,
+ "id": 839,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 838,
+ "name": "onlyRegistered",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 568,
+ "src": "3856:14:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "3856:14:3"
+ }
+ ],
+ "name": "vest",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 835,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 834,
+ "name": "amount",
+ "nodeType": "VariableDeclaration",
+ "scope": 860,
+ "src": "3818:14:3",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 833,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "3818:7:3",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "3817:16:3"
+ },
+ "returnParameters": {
+ "id": 840,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "3871:0:3"
+ },
+ "scope": 861,
+ "src": "3804:200:3",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ }
+ ],
+ "scope": 862,
+ "src": "212:3794:3"
+ }
+ ],
+ "src": "0:4007:3"
+ },
+ "compiler": {
+ "name": "solc",
+ "version": "0.5.11+commit.c082d0b4.Emscripten.clang"
+ },
+ "networks": {},
+ "schemaVersion": "3.0.11",
+ "updatedAt": "2019-09-29T03:11:52.528Z",
+ "devdoc": {
+ "methods": {
+ "isOwner()": {
+ "return": "true if `msg.sender` is the owner of the contract."
+ },
+ "owner()": {
+ "return": "the address of the owner."
+ },
+ "register(bytes,string,string,string,string)": {
+ "details": "register a node"
+ },
+ "renounceOwnership()": {
+ "details": "Allows the current owner to relinquish control of the contract."
+ },
+ "replaceNodePublicKey(bytes)": {
+ "details": "replace node public key"
+ },
+ "transferOwnership(address)": {
+ "details": "Allows the current owner to transfer control of the contract to a newOwner.",
+ "params": {
+ "newOwner": "The address to transfer ownership to."
+ }
+ },
+ "transferOwnershipByFoundation(address)": {
+ "details": "transfer node ownership"
+ },
+ "unstakeByFoundation(uint256)": {
+ "details": "unstake by foundation"
+ },
+ "vest(uint256)": {
+ "details": "vest"
+ },
+ "withdraw()": {
+ "details": "withdraw balance"
+ }
+ }
+ },
+ "userdoc": {
+ "methods": {
+ "renounceOwnership()": {
+ "notice": "Renouncing to ownership will leave the contract without an owner. It will not be possible to call the functions with the `onlyOwner` modifier anymore."
+ },
+ "unstakeByFoundation(uint256)": {
+ "notice": "only can unstake vested amount"
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/build/contracts/NodeStakerMock.json b/build/contracts/NodeStakerMock.json
new file mode 100644
index 0000000..7560c93
--- /dev/null
+++ b/build/contracts/NodeStakerMock.json
@@ -0,0 +1,1001 @@
+{
+ "contractName": "NodeStakerMock",
+ "abi": [
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "registered",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [],
+ "name": "withdraw",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "bytes",
+ "name": "key",
+ "type": "bytes"
+ }
+ ],
+ "name": "replaceNodePublicKey",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "amount",
+ "type": "uint256"
+ }
+ ],
+ "name": "vest",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "availableUnstakeAmount",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [],
+ "name": "renounceOwnership",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "amount",
+ "type": "uint256"
+ }
+ ],
+ "name": "unstakeByFoundation",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "owner",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "isOwner",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "getStakedAmount",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "getUnstakedAmount",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "bytes",
+ "name": "publicKey",
+ "type": "bytes"
+ },
+ {
+ "internalType": "string",
+ "name": "name",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "email",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "location",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "url",
+ "type": "string"
+ }
+ ],
+ "name": "register",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "isFoundation",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "newOwner",
+ "type": "address"
+ }
+ ],
+ "name": "transferOwnershipByFoundation",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "newOwner",
+ "type": "address"
+ }
+ ],
+ "name": "transferOwnership",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "_address",
+ "type": "address"
+ }
+ ],
+ "name": "setFoundationAddress",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "vested",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "payable": true,
+ "stateMutability": "payable",
+ "type": "fallback"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "sender",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "bytes",
+ "name": "publicKey",
+ "type": "bytes"
+ },
+ {
+ "indexed": false,
+ "internalType": "string",
+ "name": "name",
+ "type": "string"
+ },
+ {
+ "indexed": false,
+ "internalType": "string",
+ "name": "email",
+ "type": "string"
+ },
+ {
+ "indexed": false,
+ "internalType": "string",
+ "name": "location",
+ "type": "string"
+ },
+ {
+ "indexed": false,
+ "internalType": "string",
+ "name": "url",
+ "type": "string"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "value",
+ "type": "uint256"
+ }
+ ],
+ "name": "NodeRegister",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "sender",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "amount",
+ "type": "uint256"
+ }
+ ],
+ "name": "NodeDeposited",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "amount",
+ "type": "uint256"
+ }
+ ],
+ "name": "NodeVested",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "owner",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "amount",
+ "type": "uint256"
+ }
+ ],
+ "name": "NodeWithdrawn",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "bytes",
+ "name": "oldKey",
+ "type": "bytes"
+ },
+ {
+ "indexed": false,
+ "internalType": "bytes",
+ "name": "newKey",
+ "type": "bytes"
+ }
+ ],
+ "name": "NodePublicKeyReplaced",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "amount",
+ "type": "uint256"
+ }
+ ],
+ "name": "UnstakedByFoundation",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "from",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "to",
+ "type": "address"
+ }
+ ],
+ "name": "OwnershipTranferedByFoundation",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "previousOwner",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "newOwner",
+ "type": "address"
+ }
+ ],
+ "name": "OwnershipTransferred",
+ "type": "event"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "govAddress",
+ "type": "address"
+ }
+ ],
+ "name": "setGovernance",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ }
+ ],
+ "metadata": "{\"compiler\":{\"version\":\"0.5.11+commit.c082d0b4\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"registered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"withdraw\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"key\",\"type\":\"bytes\"}],\"name\":\"replaceNodePublicKey\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"vest\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"availableUnstakeAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"unstakeByFoundation\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getStakedAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"govAddress\",\"type\":\"address\"}],\"name\":\"setGovernance\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getUnstakedAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"email\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"location\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"url\",\"type\":\"string\"}],\"name\":\"register\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isFoundation\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnershipByFoundation\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"setFoundationAddress\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"vested\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"publicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"email\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"location\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"url\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"NodeRegister\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"NodeDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"NodeVested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"NodeWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"oldKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"newKey\",\"type\":\"bytes\"}],\"name\":\"NodePublicKeyReplaced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"UnstakedByFoundation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTranferedByFoundation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"}],\"devdoc\":{\"methods\":{\"isOwner()\":{\"return\":\"true if `msg.sender` is the owner of the contract.\"},\"owner()\":{\"return\":\"the address of the owner.\"},\"register(bytes,string,string,string,string)\":{\"details\":\"register a node\"},\"renounceOwnership()\":{\"details\":\"Allows the current owner to relinquish control of the contract.\"},\"replaceNodePublicKey(bytes)\":{\"details\":\"replace node public key\"},\"transferOwnership(address)\":{\"details\":\"Allows the current owner to transfer control of the contract to a newOwner.\",\"params\":{\"newOwner\":\"The address to transfer ownership to.\"}},\"transferOwnershipByFoundation(address)\":{\"details\":\"transfer node ownership\"},\"unstakeByFoundation(uint256)\":{\"details\":\"unstake by foundation\"},\"vest(uint256)\":{\"details\":\"vest\"},\"withdraw()\":{\"details\":\"withdraw balance\"}}},\"userdoc\":{\"methods\":{\"renounceOwnership()\":{\"notice\":\"Renouncing to ownership will leave the contract without an owner. It will not be possible to call the functions with the `onlyOwner` modifier anymore.\"},\"unstakeByFoundation(uint256)\":{\"notice\":\"only can unstake vested amount\"}}}},\"settings\":{\"compilationTarget\":{\"/Users/aitjcize/Work/tangerine-network/node-staker/contracts/test/NodeStakerMock.sol\":\"NodeStakerMock\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/aitjcize/Work/tangerine-network/node-staker/contracts/FoundationOwnable.sol\":{\"keccak256\":\"0xf7a0313191c80af18efbb2c914fa12bf5a96fb5a43c20c21371f67bcaf449bcf\",\"urls\":[\"bzz-raw://6bc9950f402bb1654e0ab1b1357fa857f6bd6e8a5863b9ca7e59d97b51ebd1ab\",\"dweb:/ipfs/QmeWak99q7rfSZzV79n5GhFQZTeZHhkoV4Loxw6sFmiQC4\"]},\"/Users/aitjcize/Work/tangerine-network/node-staker/contracts/Governance.sol\":{\"keccak256\":\"0xcfdc3785ac2c5c1937e80ca46b030d083952a66f22732cd80e440cc45675ea62\",\"urls\":[\"bzz-raw://5f33f67e58c7ddc0f100cd2fbe89f2a0a0169bda17742a3d633df62a7921d051\",\"dweb:/ipfs/QmSHtHd9VBagDzc4FaKRZ56pZkZ9Nu1AA7YjwyokhFRU5q\"]},\"/Users/aitjcize/Work/tangerine-network/node-staker/contracts/NodeStaker.sol\":{\"keccak256\":\"0x2e7b39e18d5a0a27afee23974ec54491286ece6f89c12818ee67829a4e5be905\",\"urls\":[\"bzz-raw://aeb7693cf5be3214117b4949c90e9dee3b8bce27f1bf9ffaa8952eb20faacffe\",\"dweb:/ipfs/Qmc15ZPPcRK54dDnVMfXiTE8abdbdSrcX3kwjtFjVuENVm\"]},\"/Users/aitjcize/Work/tangerine-network/node-staker/contracts/test/NodeStakerMock.sol\":{\"keccak256\":\"0xc508a041aba17236f20669f722aad4f1cc0f41d37909d0ab8c55501c0255123b\",\"urls\":[\"bzz-raw://9171044c0e848711cce691f493936323ca8a7875a0acc2994a1a4d9c6252020d\",\"dweb:/ipfs/QmUykMgjhgQgFrkHXfVY1e7WsMqC1VyGraPTGYXnw4j4Am\"]},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x965012d27b4262d7a41f5028cbb30c51ebd9ecd4be8fb30380aaa7a3c64fbc8b\",\"urls\":[\"bzz-raw://1eb493553b27efd46c231a836a83ce50d215639feb97b4aac9f301d0fd034ff5\",\"dweb:/ipfs/QmbMdvSXcqGKxeeYvzF3VrWpoHQyVzMXBhzhAokF2Gdymv\"]},\"openzeppelin-solidity/contracts/ownership/Ownable.sol\":{\"keccak256\":\"0x980de387a1a020a498f53d00f89fecebb12c949a17e8f160093c0303ede2b786\",\"urls\":[\"bzz-raw://f07a2c393caa85f62f0aaa461e3edd50aa59371d4209778ba0558d7f8b4b856c\",\"dweb:/ipfs/QmeN3ZiYGSjCnQFeYaJNgoXjF9eDue1g3e9pqManRkeBtV\"]}},\"version\":1}",
+ "bytecode": "0x60806040819052600280546001600160a01b031990811673246fcde58581e2754f215a523c0718c4bfc8041f179091556000805490911633178082556001600160a01b0316917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3600180546001600160a01b031916331790556124198061008b6000396000f3fe6080604052600436106101095760003560e01c8063a4e15db911610095578063d392a7d511610064578063d392a7d51461062e578063e97b387414610643578063f2fde38b14610676578063f41377ca146106a9578063fea5657c146106dc57610109565b8063a4e15db91461030c578063ab033ea914610321578063b244fdcb14610354578063d242f4cc1461036957610109565b80636d6c12f3116100dc5780636d6c12f314610260578063715018a61461028757806375fc0e0d1461029c5780638da5cb5b146102c65780638f32d59b146102f757610109565b80632de40ce3146101455780633ccfd60b1461016e5780633f007c20146101855780636a760b8014610236575b6040805133815234602082015281517f47a6374f7d50799673b068330af87c22b7a43b4d8ac57b66965556967d814ea0929181900390910190a1005b34801561015157600080fd5b5061015a6106f1565b604080519115158252519081900360200190f35b34801561017a57600080fd5b50610183610701565b005b34801561019157600080fd5b50610183600480360360208110156101a857600080fd5b810190602081018135600160201b8111156101c257600080fd5b8201836020820111156101d457600080fd5b803590602001918460018302840111600160201b831117156101f557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506108bc945050505050565b34801561024257600080fd5b506101836004803603602081101561025957600080fd5b5035610fba565b34801561026c57600080fd5b506102756110ba565b60408051918252519081900360200190f35b34801561029357600080fd5b506101836110c0565b3480156102a857600080fd5b50610183600480360360208110156102bf57600080fd5b503561111b565b3480156102d257600080fd5b506102db6112aa565b604080516001600160a01b039092168252519081900360200190f35b34801561030357600080fd5b5061015a6112b9565b34801561031857600080fd5b506102756112ca565b34801561032d57600080fd5b506101836004803603602081101561034457600080fd5b50356001600160a01b031661174e565b34801561036057600080fd5b50610275611781565b34801561037557600080fd5b50610183600480360360a081101561038c57600080fd5b810190602081018135600160201b8111156103a657600080fd5b8201836020820111156103b857600080fd5b803590602001918460018302840111600160201b831117156103d957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561042b57600080fd5b82018360208201111561043d57600080fd5b803590602001918460018302840111600160201b8311171561045e57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156104b057600080fd5b8201836020820111156104c257600080fd5b803590602001918460018302840111600160201b831117156104e357600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561053557600080fd5b82018360208201111561054757600080fd5b803590602001918460018302840111600160201b8311171561056857600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156105ba57600080fd5b8201836020820111156105cc57600080fd5b803590602001918460018302840111600160201b831117156105ed57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611c08945050505050565b34801561063a57600080fd5b5061015a6121bb565b34801561064f57600080fd5b506101836004803603602081101561066657600080fd5b50356001600160a01b03166121cc565b34801561068257600080fd5b506101836004803603602081101561069957600080fd5b50356001600160a01b0316612275565b3480156106b557600080fd5b50610183600480360360208110156106cc57600080fd5b50356001600160a01b0316612292565b3480156106e857600080fd5b506102756122ff565b600254600160a01b900460ff1681565b6107096112b9565b61071257600080fd5b600254600160a01b900460ff16610765576040805162461bcd60e51b81526020600482015260126024820152711b9bdd081c9959da5cdd195c9959081e595d60721b604482015290519081900360640190fd5b600260009054906101000a90046001600160a01b03166001600160a01b031663501883016040518163ffffffff1660e01b815260040160206040518083038186803b1580156107b357600080fd5b505afa1580156107c7573d6000803e3d6000fd5b505050506040513d60208110156107dd57600080fd5b50511561084d57600260009054906101000a90046001600160a01b03166001600160a01b0316633ccfd60b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561083457600080fd5b505af1158015610848573d6000803e3d6000fd5b505050505b604051303190339082156108fc029083906000818181858888f1935050505015801561087d573d6000803e3d6000fd5b50604080513381526020810183905281517f9f1245572fa226a27329c7a7ed7ea272cda61da69552acd8bb7bef5677d08367929181900390910190a150565b6108c46112b9565b6108cd57600080fd5b600254600160a01b900460ff16610920576040805162461bcd60e51b81526020600482015260126024820152711b9bdd081c9959da5cdd195c9959081e595d60721b604482015290519081900360640190fd5b60025460408051638503112360e01b815230600482015290516060926000926001600160a01b0390911691638503112391602480820192602092909190829003018186803b15801561097157600080fd5b505afa158015610985573d6000803e3d6000fd5b505050506040513d602081101561099b57600080fd5b5051600254604080516238a78560e71b81526004810184905290519293506001600160a01b0390911691631c53c28091602480820192600092909190829003018186803b1580156109eb57600080fd5b505afa1580156109ff573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610140811015610a2957600080fd5b815160208301805160405192949293830192919084600160201b821115610a4f57600080fd5b908301906020820185811115610a6457600080fd5b8251600160201b811182820188101715610a7d57600080fd5b82525081516020918201929091019080838360005b83811015610aaa578181015183820152602001610a92565b50505050905090810190601f168015610ad75780820380516001836020036101000a031916815260200191505b50604081815260208301519083015160609093018051919593949293929184600160201b821115610b0757600080fd5b908301906020820185811115610b1c57600080fd5b8251600160201b811182820188101715610b3557600080fd5b82525081516020918201929091019080838360005b83811015610b62578181015183820152602001610b4a565b50505050905090810190601f168015610b8f5780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084600160201b821115610bb157600080fd5b908301906020820185811115610bc657600080fd5b8251600160201b811182820188101715610bdf57600080fd5b82525081516020918201929091019080838360005b83811015610c0c578181015183820152602001610bf4565b50505050905090810190601f168015610c395780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084600160201b821115610c5b57600080fd5b908301906020820185811115610c7057600080fd5b8251600160201b811182820188101715610c8957600080fd5b82525081516020918201929091019080838360005b83811015610cb6578181015183820152602001610c9e565b50505050905090810190601f168015610ce35780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084600160201b821115610d0557600080fd5b908301906020820185811115610d1a57600080fd5b8251600160201b811182820188101715610d3357600080fd5b82525081516020918201929091019080838360005b83811015610d60578181015183820152602001610d48565b50505050905090810190601f168015610d8d5780820380516001836020036101000a031916815260200191505b5060405260200180519060200190929190805190602001909291905050509091929394959697985088985090919293949596509091929394955090919293945090919293509091925090915090505080925050600260009054906101000a90046001600160a01b03166001600160a01b0316633f007c20846040518263ffffffff1660e01b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610e51578181015183820152602001610e39565b50505050905090810190601f168015610e7e5780820380516001836020036101000a031916815260200191505b5092505050600060405180830381600087803b158015610e9d57600080fd5b505af1158015610eb1573d6000803e3d6000fd5b505050507f2a886948c8f577e57fd34e5888c9b134e579ddaaeabac3cb20ead075782f17db8284604051808060200180602001838103835285818151815260200191508051906020019080838360005b83811015610f19578181015183820152602001610f01565b50505050905090810190601f168015610f465780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015610f79578181015183820152602001610f61565b50505050905090810190601f168015610fa65780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a1505050565b610fc26121bb565b611005576040805162461bcd60e51b815260206004820152600f60248201526e37b7363c903337bab73230ba34b7b760891b604482015290519081900360640190fd5b600254600160a01b900460ff16611058576040805162461bcd60e51b81526020600482015260126024820152711b9bdd081c9959da5cdd195c9959081e595d60721b604482015290519081900360640190fd5b60035461106b908263ffffffff61230516565b600355600454611081908263ffffffff61230516565b6004556040805182815290517fa7f17da00ac7401519320391a010c46adcec80f542c7783c14b2fde4afe380539181900360200190a150565b60045481565b6110c86112b9565b6110d157600080fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6111236121bb565b611166576040805162461bcd60e51b815260206004820152600f60248201526e37b7363c903337bab73230ba34b7b760891b604482015290519081900360640190fd5b600254600160a01b900460ff166111b9576040805162461bcd60e51b81526020600482015260126024820152711b9bdd081c9959da5cdd195c9959081e595d60721b604482015290519081900360640190fd5b6004548111156111fa5760405162461bcd60e51b81526004018080602001828103825260438152602001806123a26043913960600191505060405180910390fd5b60045461120d908263ffffffff61231e16565b50600254604080516305c2fbcf60e31b81526004810184905290516001600160a01b0390921691632e17de789160248082019260009290919082900301818387803b15801561125b57600080fd5b505af115801561126f573d6000803e3d6000fd5b50506040805184815290517f78db5ae4d05ddd56ed1b359714d67cf8b55a5ed64a3d6783c0372f3cefe9e2089350908190036020019150a150565b6000546001600160a01b031690565b6000546001600160a01b0316331490565b60025460408051638503112360e01b8152306004820152905160009283926001600160a01b0390911691638503112391602480820192602092909190829003018186803b15801561131a57600080fd5b505afa15801561132e573d6000803e3d6000fd5b505050506040513d602081101561134457600080fd5b5051600254604080516238a78560e71b81526004810184905290519293506000926001600160a01b0390921691631c53c280916024808201928692909190829003018186803b15801561139657600080fd5b505afa1580156113aa573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526101408110156113d457600080fd5b815160208301805160405192949293830192919084600160201b8211156113fa57600080fd5b90830190602082018581111561140f57600080fd5b8251600160201b81118282018810171561142857600080fd5b82525081516020918201929091019080838360005b8381101561145557818101518382015260200161143d565b50505050905090810190601f1680156114825780820380516001836020036101000a031916815260200191505b50604081815260208301519083015160609093018051919593949293929184600160201b8211156114b257600080fd5b9083019060208201858111156114c757600080fd5b8251600160201b8111828201881017156114e057600080fd5b82525081516020918201929091019080838360005b8381101561150d5781810151838201526020016114f5565b50505050905090810190601f16801561153a5780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084600160201b82111561155c57600080fd5b90830190602082018581111561157157600080fd5b8251600160201b81118282018810171561158a57600080fd5b82525081516020918201929091019080838360005b838110156115b757818101518382015260200161159f565b50505050905090810190601f1680156115e45780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084600160201b82111561160657600080fd5b90830190602082018581111561161b57600080fd5b8251600160201b81118282018810171561163457600080fd5b82525081516020918201929091019080838360005b83811015611661578181015183820152602001611649565b50505050905090810190601f16801561168e5780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084600160201b8211156116b057600080fd5b9083019060208201858111156116c557600080fd5b8251600160201b8111828201881017156116de57600080fd5b82525081516020918201929091019080838360005b8381101561170b5781810151838201526020016116f3565b50505050905090810190601f1680156117385780820380516001836020036101000a031916815260200191505b5060405250969b50505050505050505050505090565b6117566112b9565b61175f57600080fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b60025460408051638503112360e01b8152306004820152905160009283926001600160a01b0390911691638503112391602480820192602092909190829003018186803b1580156117d157600080fd5b505afa1580156117e5573d6000803e3d6000fd5b505050506040513d60208110156117fb57600080fd5b5051600254604080516238a78560e71b81526004810184905290519293506000926001600160a01b0390921691631c53c280916024808201928692909190829003018186803b15801561184d57600080fd5b505afa158015611861573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261014081101561188b57600080fd5b815160208301805160405192949293830192919084600160201b8211156118b157600080fd5b9083019060208201858111156118c657600080fd5b8251600160201b8111828201881017156118df57600080fd5b82525081516020918201929091019080838360005b8381101561190c5781810151838201526020016118f4565b50505050905090810190601f1680156119395780820380516001836020036101000a031916815260200191505b50604081815260208301519083015160609093018051919593949293929184600160201b82111561196957600080fd5b90830190602082018581111561197e57600080fd5b8251600160201b81118282018810171561199757600080fd5b82525081516020918201929091019080838360005b838110156119c45781810151838201526020016119ac565b50505050905090810190601f1680156119f15780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084600160201b821115611a1357600080fd5b908301906020820185811115611a2857600080fd5b8251600160201b811182820188101715611a4157600080fd5b82525081516020918201929091019080838360005b83811015611a6e578181015183820152602001611a56565b50505050905090810190601f168015611a9b5780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084600160201b821115611abd57600080fd5b908301906020820185811115611ad257600080fd5b8251600160201b811182820188101715611aeb57600080fd5b82525081516020918201929091019080838360005b83811015611b18578181015183820152602001611b00565b50505050905090810190601f168015611b455780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084600160201b821115611b6757600080fd5b908301906020820185811115611b7c57600080fd5b8251600160201b811182820188101715611b9557600080fd5b82525081516020918201929091019080838360005b83811015611bc2578181015183820152602001611baa565b50505050905090810190601f168015611bef5780820380516001836020036101000a031916815260200191505b50604052602001519c5050505050505050505050505090565b611c106112b9565b611c1957600080fd5b600254600160a01b900460ff1615611c6d576040805162461bcd60e51b8152602060048201526012602482015271185b1c9958591e481c9959da5cdd195c995960721b604482015290519081900360640190fd5b60025460408051631bad9e0560e11b815290516000926001600160a01b03169163375b3c0a916004808301926020929190829003018186803b158015611cb257600080fd5b505afa158015611cc6573d6000803e3d6000fd5b505050506040513d6020811015611cdc57600080fd5b5051600254604051633490bd3360e21b815260a060048201908152895160a483015289519394506001600160a01b039092169263d242f4cc9285928b928b928b928b928b92918291602482019160448101916064820191608481019160c49091019060208d019080838360005b83811015611d61578181015183820152602001611d49565b50505050905090810190601f168015611d8e5780820380516001836020036101000a031916815260200191505b5086810385528a5181528a516020918201918c019080838360005b83811015611dc1578181015183820152602001611da9565b50505050905090810190601f168015611dee5780820380516001836020036101000a031916815260200191505b5086810384528951815289516020918201918b019080838360005b83811015611e21578181015183820152602001611e09565b50505050905090810190601f168015611e4e5780820380516001836020036101000a031916815260200191505b5086810383528851815288516020918201918a019080838360005b83811015611e81578181015183820152602001611e69565b50505050905090810190601f168015611eae5780820380516001836020036101000a031916815260200191505b50868103825287518152875160209182019189019080838360005b83811015611ee1578181015183820152602001611ec9565b50505050905090810190601f168015611f0e5780820380516001836020036101000a031916815260200191505b509a50505050505050505050506000604051808303818588803b158015611f3457600080fd5b505af1158015611f48573d6000803e3d6000fd5b50506002805460ff60a01b1916600160a01b1790555050604080513380825260c0820185905260e060208084018281528c51928501929092528b517f4d0296a31b4182dca6aff087582c284441743a09fbc7484015f5b57cb6801f8e965092948c948c948c948c948c948c9493908401916060850191608086019160a08701916101008801918e019080838360005b83811015611fef578181015183820152602001611fd7565b50505050905090810190601f16801561201c5780820380516001836020036101000a031916815260200191505b5086810385528b5181528b516020918201918d019080838360005b8381101561204f578181015183820152602001612037565b50505050905090810190601f16801561207c5780820380516001836020036101000a031916815260200191505b5086810384528a5181528a516020918201918c019080838360005b838110156120af578181015183820152602001612097565b50505050905090810190601f1680156120dc5780820380516001836020036101000a031916815260200191505b5086810383528951815289516020918201918b019080838360005b8381101561210f5781810151838201526020016120f7565b50505050905090810190601f16801561213c5780820380516001836020036101000a031916815260200191505b5086810382528851815288516020918201918a019080838360005b8381101561216f578181015183820152602001612157565b50505050905090810190601f16801561219c5780820380516001836020036101000a031916815260200191505b509c5050505050505050505050505060405180910390a1505050505050565b6001546001600160a01b0316331490565b6121d46121bb565b612217576040805162461bcd60e51b815260206004820152600f60248201526e37b7363c903337bab73230ba34b7b760891b604482015290519081900360640190fd5b60006122216112aa565b905061222c82612333565b604080516001600160a01b0380841682528416602082015281517ffe459a7f10652ddcfe92820200e4635f93262667763531372e5bc42e56ec7c9b929181900390910190a15050565b61227d6112b9565b61228657600080fd5b61228f81612333565b50565b61229a6121bb565b6122dd576040805162461bcd60e51b815260206004820152600f60248201526e37b7363c903337bab73230ba34b7b760891b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60035481565b60008282018381101561231757600080fd5b9392505050565b60008282111561232d57600080fd5b50900390565b6001600160a01b03811661234657600080fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b039290921691909117905556fe756e7374616b696e6720616d6f756e742073686f756c64206e6f742062652067726561746572207468616e20617661696c61626c65556e7374616b65416d6f756e742ea265627a7a7231582053a54d64381645b314042de3e3eb5d21e27644ae46318599ce9464c234e8584664736f6c634300050b0032",
+ "deployedBytecode": "0x6080604052600436106101095760003560e01c8063a4e15db911610095578063d392a7d511610064578063d392a7d51461062e578063e97b387414610643578063f2fde38b14610676578063f41377ca146106a9578063fea5657c146106dc57610109565b8063a4e15db91461030c578063ab033ea914610321578063b244fdcb14610354578063d242f4cc1461036957610109565b80636d6c12f3116100dc5780636d6c12f314610260578063715018a61461028757806375fc0e0d1461029c5780638da5cb5b146102c65780638f32d59b146102f757610109565b80632de40ce3146101455780633ccfd60b1461016e5780633f007c20146101855780636a760b8014610236575b6040805133815234602082015281517f47a6374f7d50799673b068330af87c22b7a43b4d8ac57b66965556967d814ea0929181900390910190a1005b34801561015157600080fd5b5061015a6106f1565b604080519115158252519081900360200190f35b34801561017a57600080fd5b50610183610701565b005b34801561019157600080fd5b50610183600480360360208110156101a857600080fd5b810190602081018135600160201b8111156101c257600080fd5b8201836020820111156101d457600080fd5b803590602001918460018302840111600160201b831117156101f557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506108bc945050505050565b34801561024257600080fd5b506101836004803603602081101561025957600080fd5b5035610fba565b34801561026c57600080fd5b506102756110ba565b60408051918252519081900360200190f35b34801561029357600080fd5b506101836110c0565b3480156102a857600080fd5b50610183600480360360208110156102bf57600080fd5b503561111b565b3480156102d257600080fd5b506102db6112aa565b604080516001600160a01b039092168252519081900360200190f35b34801561030357600080fd5b5061015a6112b9565b34801561031857600080fd5b506102756112ca565b34801561032d57600080fd5b506101836004803603602081101561034457600080fd5b50356001600160a01b031661174e565b34801561036057600080fd5b50610275611781565b34801561037557600080fd5b50610183600480360360a081101561038c57600080fd5b810190602081018135600160201b8111156103a657600080fd5b8201836020820111156103b857600080fd5b803590602001918460018302840111600160201b831117156103d957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561042b57600080fd5b82018360208201111561043d57600080fd5b803590602001918460018302840111600160201b8311171561045e57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156104b057600080fd5b8201836020820111156104c257600080fd5b803590602001918460018302840111600160201b831117156104e357600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561053557600080fd5b82018360208201111561054757600080fd5b803590602001918460018302840111600160201b8311171561056857600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156105ba57600080fd5b8201836020820111156105cc57600080fd5b803590602001918460018302840111600160201b831117156105ed57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611c08945050505050565b34801561063a57600080fd5b5061015a6121bb565b34801561064f57600080fd5b506101836004803603602081101561066657600080fd5b50356001600160a01b03166121cc565b34801561068257600080fd5b506101836004803603602081101561069957600080fd5b50356001600160a01b0316612275565b3480156106b557600080fd5b50610183600480360360208110156106cc57600080fd5b50356001600160a01b0316612292565b3480156106e857600080fd5b506102756122ff565b600254600160a01b900460ff1681565b6107096112b9565b61071257600080fd5b600254600160a01b900460ff16610765576040805162461bcd60e51b81526020600482015260126024820152711b9bdd081c9959da5cdd195c9959081e595d60721b604482015290519081900360640190fd5b600260009054906101000a90046001600160a01b03166001600160a01b031663501883016040518163ffffffff1660e01b815260040160206040518083038186803b1580156107b357600080fd5b505afa1580156107c7573d6000803e3d6000fd5b505050506040513d60208110156107dd57600080fd5b50511561084d57600260009054906101000a90046001600160a01b03166001600160a01b0316633ccfd60b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561083457600080fd5b505af1158015610848573d6000803e3d6000fd5b505050505b604051303190339082156108fc029083906000818181858888f1935050505015801561087d573d6000803e3d6000fd5b50604080513381526020810183905281517f9f1245572fa226a27329c7a7ed7ea272cda61da69552acd8bb7bef5677d08367929181900390910190a150565b6108c46112b9565b6108cd57600080fd5b600254600160a01b900460ff16610920576040805162461bcd60e51b81526020600482015260126024820152711b9bdd081c9959da5cdd195c9959081e595d60721b604482015290519081900360640190fd5b60025460408051638503112360e01b815230600482015290516060926000926001600160a01b0390911691638503112391602480820192602092909190829003018186803b15801561097157600080fd5b505afa158015610985573d6000803e3d6000fd5b505050506040513d602081101561099b57600080fd5b5051600254604080516238a78560e71b81526004810184905290519293506001600160a01b0390911691631c53c28091602480820192600092909190829003018186803b1580156109eb57600080fd5b505afa1580156109ff573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610140811015610a2957600080fd5b815160208301805160405192949293830192919084600160201b821115610a4f57600080fd5b908301906020820185811115610a6457600080fd5b8251600160201b811182820188101715610a7d57600080fd5b82525081516020918201929091019080838360005b83811015610aaa578181015183820152602001610a92565b50505050905090810190601f168015610ad75780820380516001836020036101000a031916815260200191505b50604081815260208301519083015160609093018051919593949293929184600160201b821115610b0757600080fd5b908301906020820185811115610b1c57600080fd5b8251600160201b811182820188101715610b3557600080fd5b82525081516020918201929091019080838360005b83811015610b62578181015183820152602001610b4a565b50505050905090810190601f168015610b8f5780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084600160201b821115610bb157600080fd5b908301906020820185811115610bc657600080fd5b8251600160201b811182820188101715610bdf57600080fd5b82525081516020918201929091019080838360005b83811015610c0c578181015183820152602001610bf4565b50505050905090810190601f168015610c395780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084600160201b821115610c5b57600080fd5b908301906020820185811115610c7057600080fd5b8251600160201b811182820188101715610c8957600080fd5b82525081516020918201929091019080838360005b83811015610cb6578181015183820152602001610c9e565b50505050905090810190601f168015610ce35780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084600160201b821115610d0557600080fd5b908301906020820185811115610d1a57600080fd5b8251600160201b811182820188101715610d3357600080fd5b82525081516020918201929091019080838360005b83811015610d60578181015183820152602001610d48565b50505050905090810190601f168015610d8d5780820380516001836020036101000a031916815260200191505b5060405260200180519060200190929190805190602001909291905050509091929394959697985088985090919293949596509091929394955090919293945090919293509091925090915090505080925050600260009054906101000a90046001600160a01b03166001600160a01b0316633f007c20846040518263ffffffff1660e01b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610e51578181015183820152602001610e39565b50505050905090810190601f168015610e7e5780820380516001836020036101000a031916815260200191505b5092505050600060405180830381600087803b158015610e9d57600080fd5b505af1158015610eb1573d6000803e3d6000fd5b505050507f2a886948c8f577e57fd34e5888c9b134e579ddaaeabac3cb20ead075782f17db8284604051808060200180602001838103835285818151815260200191508051906020019080838360005b83811015610f19578181015183820152602001610f01565b50505050905090810190601f168015610f465780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015610f79578181015183820152602001610f61565b50505050905090810190601f168015610fa65780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a1505050565b610fc26121bb565b611005576040805162461bcd60e51b815260206004820152600f60248201526e37b7363c903337bab73230ba34b7b760891b604482015290519081900360640190fd5b600254600160a01b900460ff16611058576040805162461bcd60e51b81526020600482015260126024820152711b9bdd081c9959da5cdd195c9959081e595d60721b604482015290519081900360640190fd5b60035461106b908263ffffffff61230516565b600355600454611081908263ffffffff61230516565b6004556040805182815290517fa7f17da00ac7401519320391a010c46adcec80f542c7783c14b2fde4afe380539181900360200190a150565b60045481565b6110c86112b9565b6110d157600080fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6111236121bb565b611166576040805162461bcd60e51b815260206004820152600f60248201526e37b7363c903337bab73230ba34b7b760891b604482015290519081900360640190fd5b600254600160a01b900460ff166111b9576040805162461bcd60e51b81526020600482015260126024820152711b9bdd081c9959da5cdd195c9959081e595d60721b604482015290519081900360640190fd5b6004548111156111fa5760405162461bcd60e51b81526004018080602001828103825260438152602001806123a26043913960600191505060405180910390fd5b60045461120d908263ffffffff61231e16565b50600254604080516305c2fbcf60e31b81526004810184905290516001600160a01b0390921691632e17de789160248082019260009290919082900301818387803b15801561125b57600080fd5b505af115801561126f573d6000803e3d6000fd5b50506040805184815290517f78db5ae4d05ddd56ed1b359714d67cf8b55a5ed64a3d6783c0372f3cefe9e2089350908190036020019150a150565b6000546001600160a01b031690565b6000546001600160a01b0316331490565b60025460408051638503112360e01b8152306004820152905160009283926001600160a01b0390911691638503112391602480820192602092909190829003018186803b15801561131a57600080fd5b505afa15801561132e573d6000803e3d6000fd5b505050506040513d602081101561134457600080fd5b5051600254604080516238a78560e71b81526004810184905290519293506000926001600160a01b0390921691631c53c280916024808201928692909190829003018186803b15801561139657600080fd5b505afa1580156113aa573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526101408110156113d457600080fd5b815160208301805160405192949293830192919084600160201b8211156113fa57600080fd5b90830190602082018581111561140f57600080fd5b8251600160201b81118282018810171561142857600080fd5b82525081516020918201929091019080838360005b8381101561145557818101518382015260200161143d565b50505050905090810190601f1680156114825780820380516001836020036101000a031916815260200191505b50604081815260208301519083015160609093018051919593949293929184600160201b8211156114b257600080fd5b9083019060208201858111156114c757600080fd5b8251600160201b8111828201881017156114e057600080fd5b82525081516020918201929091019080838360005b8381101561150d5781810151838201526020016114f5565b50505050905090810190601f16801561153a5780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084600160201b82111561155c57600080fd5b90830190602082018581111561157157600080fd5b8251600160201b81118282018810171561158a57600080fd5b82525081516020918201929091019080838360005b838110156115b757818101518382015260200161159f565b50505050905090810190601f1680156115e45780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084600160201b82111561160657600080fd5b90830190602082018581111561161b57600080fd5b8251600160201b81118282018810171561163457600080fd5b82525081516020918201929091019080838360005b83811015611661578181015183820152602001611649565b50505050905090810190601f16801561168e5780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084600160201b8211156116b057600080fd5b9083019060208201858111156116c557600080fd5b8251600160201b8111828201881017156116de57600080fd5b82525081516020918201929091019080838360005b8381101561170b5781810151838201526020016116f3565b50505050905090810190601f1680156117385780820380516001836020036101000a031916815260200191505b5060405250969b50505050505050505050505090565b6117566112b9565b61175f57600080fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b60025460408051638503112360e01b8152306004820152905160009283926001600160a01b0390911691638503112391602480820192602092909190829003018186803b1580156117d157600080fd5b505afa1580156117e5573d6000803e3d6000fd5b505050506040513d60208110156117fb57600080fd5b5051600254604080516238a78560e71b81526004810184905290519293506000926001600160a01b0390921691631c53c280916024808201928692909190829003018186803b15801561184d57600080fd5b505afa158015611861573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261014081101561188b57600080fd5b815160208301805160405192949293830192919084600160201b8211156118b157600080fd5b9083019060208201858111156118c657600080fd5b8251600160201b8111828201881017156118df57600080fd5b82525081516020918201929091019080838360005b8381101561190c5781810151838201526020016118f4565b50505050905090810190601f1680156119395780820380516001836020036101000a031916815260200191505b50604081815260208301519083015160609093018051919593949293929184600160201b82111561196957600080fd5b90830190602082018581111561197e57600080fd5b8251600160201b81118282018810171561199757600080fd5b82525081516020918201929091019080838360005b838110156119c45781810151838201526020016119ac565b50505050905090810190601f1680156119f15780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084600160201b821115611a1357600080fd5b908301906020820185811115611a2857600080fd5b8251600160201b811182820188101715611a4157600080fd5b82525081516020918201929091019080838360005b83811015611a6e578181015183820152602001611a56565b50505050905090810190601f168015611a9b5780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084600160201b821115611abd57600080fd5b908301906020820185811115611ad257600080fd5b8251600160201b811182820188101715611aeb57600080fd5b82525081516020918201929091019080838360005b83811015611b18578181015183820152602001611b00565b50505050905090810190601f168015611b455780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084600160201b821115611b6757600080fd5b908301906020820185811115611b7c57600080fd5b8251600160201b811182820188101715611b9557600080fd5b82525081516020918201929091019080838360005b83811015611bc2578181015183820152602001611baa565b50505050905090810190601f168015611bef5780820380516001836020036101000a031916815260200191505b50604052602001519c5050505050505050505050505090565b611c106112b9565b611c1957600080fd5b600254600160a01b900460ff1615611c6d576040805162461bcd60e51b8152602060048201526012602482015271185b1c9958591e481c9959da5cdd195c995960721b604482015290519081900360640190fd5b60025460408051631bad9e0560e11b815290516000926001600160a01b03169163375b3c0a916004808301926020929190829003018186803b158015611cb257600080fd5b505afa158015611cc6573d6000803e3d6000fd5b505050506040513d6020811015611cdc57600080fd5b5051600254604051633490bd3360e21b815260a060048201908152895160a483015289519394506001600160a01b039092169263d242f4cc9285928b928b928b928b928b92918291602482019160448101916064820191608481019160c49091019060208d019080838360005b83811015611d61578181015183820152602001611d49565b50505050905090810190601f168015611d8e5780820380516001836020036101000a031916815260200191505b5086810385528a5181528a516020918201918c019080838360005b83811015611dc1578181015183820152602001611da9565b50505050905090810190601f168015611dee5780820380516001836020036101000a031916815260200191505b5086810384528951815289516020918201918b019080838360005b83811015611e21578181015183820152602001611e09565b50505050905090810190601f168015611e4e5780820380516001836020036101000a031916815260200191505b5086810383528851815288516020918201918a019080838360005b83811015611e81578181015183820152602001611e69565b50505050905090810190601f168015611eae5780820380516001836020036101000a031916815260200191505b50868103825287518152875160209182019189019080838360005b83811015611ee1578181015183820152602001611ec9565b50505050905090810190601f168015611f0e5780820380516001836020036101000a031916815260200191505b509a50505050505050505050506000604051808303818588803b158015611f3457600080fd5b505af1158015611f48573d6000803e3d6000fd5b50506002805460ff60a01b1916600160a01b1790555050604080513380825260c0820185905260e060208084018281528c51928501929092528b517f4d0296a31b4182dca6aff087582c284441743a09fbc7484015f5b57cb6801f8e965092948c948c948c948c948c948c9493908401916060850191608086019160a08701916101008801918e019080838360005b83811015611fef578181015183820152602001611fd7565b50505050905090810190601f16801561201c5780820380516001836020036101000a031916815260200191505b5086810385528b5181528b516020918201918d019080838360005b8381101561204f578181015183820152602001612037565b50505050905090810190601f16801561207c5780820380516001836020036101000a031916815260200191505b5086810384528a5181528a516020918201918c019080838360005b838110156120af578181015183820152602001612097565b50505050905090810190601f1680156120dc5780820380516001836020036101000a031916815260200191505b5086810383528951815289516020918201918b019080838360005b8381101561210f5781810151838201526020016120f7565b50505050905090810190601f16801561213c5780820380516001836020036101000a031916815260200191505b5086810382528851815288516020918201918a019080838360005b8381101561216f578181015183820152602001612157565b50505050905090810190601f16801561219c5780820380516001836020036101000a031916815260200191505b509c5050505050505050505050505060405180910390a1505050505050565b6001546001600160a01b0316331490565b6121d46121bb565b612217576040805162461bcd60e51b815260206004820152600f60248201526e37b7363c903337bab73230ba34b7b760891b604482015290519081900360640190fd5b60006122216112aa565b905061222c82612333565b604080516001600160a01b0380841682528416602082015281517ffe459a7f10652ddcfe92820200e4635f93262667763531372e5bc42e56ec7c9b929181900390910190a15050565b61227d6112b9565b61228657600080fd5b61228f81612333565b50565b61229a6121bb565b6122dd576040805162461bcd60e51b815260206004820152600f60248201526e37b7363c903337bab73230ba34b7b760891b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60035481565b60008282018381101561231757600080fd5b9392505050565b60008282111561232d57600080fd5b50900390565b6001600160a01b03811661234657600080fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b039290921691909117905556fe756e7374616b696e6720616d6f756e742073686f756c64206e6f742062652067726561746572207468616e20617661696c61626c65556e7374616b65416d6f756e742ea265627a7a7231582053a54d64381645b314042de3e3eb5d21e27644ae46318599ce9464c234e8584664736f6c634300050b0032",
+ "sourceMap": "55:147:5:-;;;;;298:71:3;;;-1:-1:-1;;;;;;298:71:3;;;326:42;298:71;;;;;515:19:7;;;;;524:10;515:19;;;;-1:-1:-1;;;;;582:6:7;;549:40;;298:71:3;;549:40:7;114:17:0;:30;;-1:-1:-1;;;;;;114:30:0;134:10;114:30;;;55:147:5;;;;;;",
+ "deployedSourceMap": "55:147:5:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1251:36:3;;;1265:10;1251:36;;1277:9;1251:36;;;;;;;;;;;;;;;;;55:147:5;373:22:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;373:22:3;;;:::i;:::-;;;;;;;;;;;;;;;;;;2432:222;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2432:222:3;;;:::i;:::-;;2706:304;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2706:304:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2706:304:3;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;2706:304:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2706:304:3;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2706:304:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;2706:304:3;;-1:-1:-1;2706:304:3;;-1:-1:-1;;;;;2706:304:3:i;3804:200::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3804:200:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3804:200:3;;:::i;424:37::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;424:37:3;;;:::i;:::-;;;;;;;;;;;;;;;;1347:137:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1347:137:7;;;:::i;3462:309:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3462:309:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3462:309:3;;:::i;659:77:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;659:77:7;;;:::i;:::-;;;;-1:-1:-1;;;;;659:77:7;;;;;;;;;;;;;;979:90;;8:9:-1;5:2;;;30:1;27;20:12;5:2;979:90:7;;;:::i;1371:215:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1371:215:3;;;:::i;100:99:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;100:99:5;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;100:99:5;-1:-1:-1;;;;;100:99:5;;:::i;1590:223:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1590:223:3;;;:::i;1948:439::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1948:439:3;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;1948:439:3;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;1948:439:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1948:439:3;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1948:439:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1948:439:3;;;;;;;;-1:-1:-1;1948:439:3;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;1948:439:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1948:439:3;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1948:439:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1948:439:3;;;;;;;;-1:-1:-1;1948:439:3;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;1948:439:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1948:439:3;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1948:439:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1948:439:3;;;;;;;;-1:-1:-1;1948:439:3;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;1948:439:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1948:439:3;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1948:439:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1948:439:3;;;;;;;;-1:-1:-1;1948:439:3;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;1948:439:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1948:439:3;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1948:439:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1948:439:3;;-1:-1:-1;1948:439:3;;-1:-1:-1;;;;;1948:439:3:i;335:100:0:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;335:100:0;;;:::i;3156:211:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3156:211:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3156:211:3;-1:-1:-1;;;;;3156:211:3;;:::i;1655:107:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1655:107:7;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1655:107:7;-1:-1:-1;;;;;1655:107:7;;:::i;439:109:0:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;439:109:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;439:109:0;-1:-1:-1;;;;;439:109:0;;:::i;399:21:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;399:21:3;;;:::i;373:22::-;;;-1:-1:-1;;;373:22:3;;;;;:::o;2432:222::-;863:9:7;:7;:9::i;:::-;855:18;;;;;;1064:10:3;;-1:-1:-1;;;1064:10:3;;;;1056:41;;;;;-1:-1:-1;;;1056:41:3;;;;;;;;;;;;-1:-1:-1;;;1056:41:3;;;;;;;;;;;;;;;2494:3;;;;;;;;;-1:-1:-1;;;;;2494:3:3;-1:-1:-1;;;;;2494:16:3;;:18;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2494:18:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2494:18:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2494:18:3;2490:38;;;2514:3;;;;;;;;;-1:-1:-1;;;;;2514:3:3;-1:-1:-1;;;;;2514:12:3;;:14;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2514:14:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2514:14:3;;;;2490:38;2578:27;;2559:4;2551:21;;2578:10;;:27;;;;;2551:21;;2534:14;2578:27;2534:14;2578:27;2551:21;2578:10;:27;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;2616:33:3;;;2630:10;2616:33;;;;;;;;;;;;;;;;;;;;;1103:1;2432:222::o;2706:304::-;863:9:7;:7;:9::i;:::-;855:18;;;;;;1064:10:3;;-1:-1:-1;;;1064:10:3;;;;1056:41;;;;;-1:-1:-1;;;1056:41:3;;;;;;;;;;;;-1:-1:-1;;;1056:41:3;;;;;;;;;;;;;;;2842:3;;:39;;;-1:-1:-1;;;2842:39:3;;2875:4;2842:39;;;;;;2792:19;;2817:14;;-1:-1:-1;;;;;2842:3:3;;;;:24;;:39;;;;;;;;;;;;;;;:3;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;2842:39:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2842:39:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2842:39:3;2908:3;;:17;;;-1:-1:-1;;;2908:17:3;;;;;;;;;;2842:39;;-1:-1:-1;;;;;;2908:3:3;;;;:9;;:17;;;;;:3;;:17;;;;;;;;:3;:17;;;5:2:-1;;;;30:1;27;20:12;5:2;2908:17:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2908:17:3;;;;;;39:16:-1;36:1;17:17;2:54;101:4;2908:17:3;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:3;5:12;;2:2;;;30:1;27;20:12;2:2;2908:17:3;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:20;;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;2908:17:3;;420:4:-1;411:14;;;;2908:17:3;;;;;411:14:-1;2908:17:3;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2908:17:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2908:17:3;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:20;;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;2908:17:3;;420:4:-1;411:14;;;;2908:17:3;;;;;411:14:-1;2908:17:3;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2908:17:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;2908:17:3;;420:4:-1;411:14;;;;2908:17:3;;;;;411:14:-1;2908:17:3;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2908:17:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;2908:17:3;;420:4:-1;411:14;;;;2908:17:3;;;;;411:14:-1;2908:17:3;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2908:17:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;2908:17:3;;420:4:-1;411:14;;;;2908:17:3;;;;;411:14:-1;2908:17:3;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2908:17:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2888:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2931:3;;;;;;;;;-1:-1:-1;;;;;2931:3:3;-1:-1:-1;;;;;2931:24:3;;2956:3;2931:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2931:29:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2931:29:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2931:29:3;;;;2971:34;2993:6;3001:3;2971:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2971:34:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2971:34:3;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2971:34:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1103:1;;2706:304;:::o;3804:200::-;239:14:0;:12;:14::i;:::-;231:42;;;;;-1:-1:-1;;;231:42:0;;;;;;;;;;;;-1:-1:-1;;;231:42:0;;;;;;;;;;;;;;;1064:10:3;;-1:-1:-1;;;1064:10:3;;;;1056:41;;;;;-1:-1:-1;;;1056:41:3;;;;;;;;;;;;-1:-1:-1;;;1056:41:3;;;;;;;;;;;;;;;3886:6;;:18;;3897:6;3886:18;:10;:18;:::i;:::-;3877:6;:27;3936:22;;:34;;3963:6;3936:34;:26;:34;:::i;:::-;3911:22;:59;3981:18;;;;;;;;;;;;;;;;;3804:200;:::o;424:37::-;;;;:::o;1347:137:7:-;863:9;:7;:9::i;:::-;855:18;;;;;;1445:1;1429:6;;1408:40;;-1:-1:-1;;;;;1429:6:7;;;;1408:40;;1445:1;;1408:40;1475:1;1458:19;;-1:-1:-1;;;;;;1458:19:7;;;1347:137::o;3462:309:3:-;239:14:0;:12;:14::i;:::-;231:42;;;;;-1:-1:-1;;;231:42:0;;;;;;;;;;;;-1:-1:-1;;;231:42:0;;;;;;;;;;;;;;;1064:10:3;;-1:-1:-1;;;1064:10:3;;;;1056:41;;;;;-1:-1:-1;;;1056:41:3;;;;;;;;;;;;-1:-1:-1;;;1056:41:3;;;;;;;;;;;;;;;3568:22;;3558:6;:32;;3550:112;;;;-1:-1:-1;;;3550:112:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3668:22;;:34;;3695:6;3668:34;:26;:34;:::i;:::-;-1:-1:-1;3708:3:3;;:19;;;-1:-1:-1;;;3708:19:3;;;;;;;;;;-1:-1:-1;;;;;3708:3:3;;;;:11;;:19;;;;;:3;;:19;;;;;;;;:3;;:19;;;5:2:-1;;;;30:1;27;20:12;5:2;3708:19:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;3738:28:3;;;;;;;;;;-1:-1:-1;3738:28:3;;;;;;;-1:-1:-1;3738:28:3;3462:309;:::o;659:77:7:-;697:7;723:6;-1:-1:-1;;;;;723:6:7;659:77;:::o;979:90::-;1019:4;1056:6;-1:-1:-1;;;;;1056:6:7;1042:10;:20;;979:90::o;1371:215:3:-;1459:3;;:39;;;-1:-1:-1;;;1459:39:3;;1492:4;1459:39;;;;;;1419:7;;;;-1:-1:-1;;;;;1459:3:3;;;;:24;;:39;;;;;;;;;;;;;;;:3;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;1459:39:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1459:39:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1459:39:3;1545:3;;:17;;;-1:-1:-1;;;1545:17:3;;;;;;;;;;1459:39;;-1:-1:-1;1505:14:3;;-1:-1:-1;;;;;1545:3:3;;;;:9;;:17;;;;;1505:14;;1545:17;;;;;;;;:3;:17;;;5:2:-1;;;;30:1;27;20:12;5:2;1545:17:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1545:17:3;;;;;;39:16:-1;36:1;17:17;2:54;101:4;1545:17:3;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:3;5:12;;2:2;;;30:1;27;20:12;2:2;1545:17:3;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:20;;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;1545:17:3;;420:4:-1;411:14;;;;1545:17:3;;;;;411:14:-1;1545:17:3;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1545:17:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1545:17:3;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:20;;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;1545:17:3;;420:4:-1;411:14;;;;1545:17:3;;;;;411:14:-1;1545:17:3;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1545:17:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;1545:17:3;;420:4:-1;411:14;;;;1545:17:3;;;;;411:14:-1;1545:17:3;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1545:17:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;1545:17:3;;420:4:-1;411:14;;;;1545:17:3;;;;;411:14:-1;1545:17:3;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1545:17:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;1545:17:3;;420:4:-1;411:14;;;;1545:17:3;;;;;411:14:-1;1545:17:3;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1545:17:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1545:17:3;;-1:-1:-1;1525:37:3;;-1:-1:-1;;;;;;;;;;;;1371:215:3;:::o;100:99:5:-;863:9:7;:7;:9::i;:::-;855:18;;;;;;166:3:5;:28;;-1:-1:-1;;;;;;166:28:5;-1:-1:-1;;;;;166:28:5;;;;;;;;;;100:99::o;1590:223:3:-;1680:3;;:39;;;-1:-1:-1;;;1680:39:3;;1713:4;1680:39;;;;;;1640:7;;;;-1:-1:-1;;;;;1680:3:3;;;;:24;;:39;;;;;;;;;;;;;;;:3;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;1680:39:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1680:39:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1680:39:3;1770:3;;:17;;;-1:-1:-1;;;1770:17:3;;;;;;;;;;1680:39;;-1:-1:-1;1726:16:3;;-1:-1:-1;;;;;1770:3:3;;;;:9;;:17;;;;;1726:16;;1770:17;;;;;;;;:3;:17;;;5:2:-1;;;;30:1;27;20:12;5:2;1770:17:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1770:17:3;;;;;;39:16:-1;36:1;17:17;2:54;101:4;1770:17:3;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:3;5:12;;2:2;;;30:1;27;20:12;2:2;1770:17:3;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:20;;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;1770:17:3;;420:4:-1;411:14;;;;1770:17:3;;;;;411:14:-1;1770:17:3;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1770:17:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1770:17:3;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:20;;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;1770:17:3;;420:4:-1;411:14;;;;1770:17:3;;;;;411:14:-1;1770:17:3;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1770:17:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;1770:17:3;;420:4:-1;411:14;;;;1770:17:3;;;;;411:14:-1;1770:17:3;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1770:17:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;1770:17:3;;420:4:-1;411:14;;;;1770:17:3;;;;;411:14:-1;1770:17:3;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1770:17:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;1770:17:3;;420:4:-1;411:14;;;;1770:17:3;;;;;411:14:-1;1770:17:3;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1770:17:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1770:17:3;;;;;;-1:-1:-1;;;;;;;;;;;;;1590:223:3;:::o;1948:439::-;863:9:7;:7;:9::i;:::-;855:18;;;;;;2130:10:3;;-1:-1:-1;;;2130:10:3;;;;2129:11;2121:42;;;;;-1:-1:-1;;;2121:42:3;;;;;;;;;;;;-1:-1:-1;;;2121:42:3;;;;;;;;;;;;;;;2188:3;;:14;;;-1:-1:-1;;;2188:14:3;;;;2169:16;;-1:-1:-1;;;;;2188:3:3;;:12;;:14;;;;;;;;;;;;;;:3;:14;;;5:2:-1;;;;30:1;27;20:12;5:2;2188:14:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2188:14:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2188:14:3;2208:3;;:67;;-1:-1:-1;;;2208:67:3;;;;;;;;;;;;;;;;;2188:14;;-1:-1:-1;;;;;;2208:3:3;;;;:12;;2188:14;;2237:9;;2248:4;;2254:5;;2261:8;;2271:3;;2208:67;;;;;;;;;;;;;;;;;;;;;;;;2188:14;2208:67;;;;;;:3;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2208:67:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2208:67:3;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2208:67:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2208:67:3;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2208:67:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2208:67:3;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2208:67:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2208:67:3;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2208:67:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2208:67:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;2281:10:3;:17;;-1:-1:-1;;;;2281:17:3;-1:-1:-1;;;2281:17:3;;;-1:-1:-1;;2309:73:3;;;2322:10;2309:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2322:10:3;;2334:9;;2345:4;;2351:5;;2358:8;;2368:3;;2373:8;;2309:73;;;;;;;;;;;;;;;;;2281:17;2309:73;;;;;;;;;2281:17;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2309:73:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2309:73:3;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2309:73:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2309:73:3;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2309:73:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2309:73:3;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2309:73:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2309:73:3;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2309:73:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;883:1:7;1948:439:3;;;;;:::o;335:100:0:-;413:17;;-1:-1:-1;;;;;413:17:0;399:10;:31;;335:100::o;3156:211:3:-;239:14:0;:12;:14::i;:::-;231:42;;;;;-1:-1:-1;;;231:42:0;;;;;;;;;;;;-1:-1:-1;;;231:42:0;;;;;;;;;;;;;;;3241:16:3;3260:7;:5;:7::i;:::-;3241:26;;3273:28;3292:8;3273:18;:28::i;:::-;3312:50;;;-1:-1:-1;;;;;3312:50:3;;;;;;;;;;;;;;;;;;;;;;;;279:1:0;3156:211:3;:::o;1655:107:7:-;863:9;:7;:9::i;:::-;855:18;;;;;;1727:28;1746:8;1727:18;:28::i;:::-;1655:107;:::o;439:109:0:-;239:14;:12;:14::i;:::-;231:42;;;;;-1:-1:-1;;;231:42:0;;;;;;;;;;;;-1:-1:-1;;;231:42:0;;;;;;;;;;;;;;;515:17;:28;;-1:-1:-1;;;;;;515:28:0;-1:-1:-1;;;;;515:28:0;;;;;;;;;;439:109::o;399:21:3:-;;;;:::o;1431:145:6:-;1489:7;1520:5;;;1543:6;;;;1535:15;;;;;;1568:1;1431:145;-1:-1:-1;;;1431:145:6:o;1205:::-;1263:7;1295:1;1290;:6;;1282:15;;;;;;-1:-1:-1;1319:5:6;;;1205:145::o;1906:183:7:-;-1:-1:-1;;;;;1979:22:7;;1971:31;;;;;;2038:6;;;2017:38;;-1:-1:-1;;;;;2017:38:7;;;;2038:6;;;2017:38;;;2065:6;:17;;-1:-1:-1;;;;;;2065:17:7;-1:-1:-1;;;;;2065:17:7;;;;;;;;;;1906:183::o",
+ "source": "pragma solidity ^0.5.11;\n\nimport \"../NodeStaker.sol\";\n\ncontract NodeStakerMock is NodeStaker {\n \n function setGovernance(address govAddress) public onlyOwner {\n gov = Governance(govAddress);\n }\n\n}\n",
+ "sourcePath": "/Users/aitjcize/Work/tangerine-network/node-staker/contracts/test/NodeStakerMock.sol",
+ "ast": {
+ "absolutePath": "/Users/aitjcize/Work/tangerine-network/node-staker/contracts/test/NodeStakerMock.sol",
+ "exportedSymbols": {
+ "NodeStakerMock": [
+ 1279
+ ]
+ },
+ "id": 1280,
+ "nodeType": "SourceUnit",
+ "nodes": [
+ {
+ "id": 1261,
+ "literals": [
+ "solidity",
+ "^",
+ "0.5",
+ ".11"
+ ],
+ "nodeType": "PragmaDirective",
+ "src": "0:24:5"
+ },
+ {
+ "absolutePath": "/Users/aitjcize/Work/tangerine-network/node-staker/contracts/NodeStaker.sol",
+ "file": "../NodeStaker.sol",
+ "id": 1262,
+ "nodeType": "ImportDirective",
+ "scope": 1280,
+ "sourceUnit": 862,
+ "src": "26:27:5",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "baseContracts": [
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 1263,
+ "name": "NodeStaker",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 861,
+ "src": "82:10:5",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_NodeStaker_$861",
+ "typeString": "contract NodeStaker"
+ }
+ },
+ "id": 1264,
+ "nodeType": "InheritanceSpecifier",
+ "src": "82:10:5"
+ }
+ ],
+ "contractDependencies": [
+ 46,
+ 861,
+ 1516
+ ],
+ "contractKind": "contract",
+ "documentation": null,
+ "fullyImplemented": true,
+ "id": 1279,
+ "linearizedBaseContracts": [
+ 1279,
+ 861,
+ 46,
+ 1516
+ ],
+ "name": "NodeStakerMock",
+ "nodeType": "ContractDefinition",
+ "nodes": [
+ {
+ "body": {
+ "id": 1277,
+ "nodeType": "Block",
+ "src": "160:39:5",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1275,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 1271,
+ "name": "gov",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 505,
+ "src": "166:3:5",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Governance_$430",
+ "typeString": "contract Governance"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1273,
+ "name": "govAddress",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1266,
+ "src": "183:10:5",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 1272,
+ "name": "Governance",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 430,
+ "src": "172:10:5",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_contract$_Governance_$430_$",
+ "typeString": "type(contract Governance)"
+ }
+ },
+ "id": 1274,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "172:22:5",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Governance_$430",
+ "typeString": "contract Governance"
+ }
+ },
+ "src": "166:28:5",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Governance_$430",
+ "typeString": "contract Governance"
+ }
+ },
+ "id": 1276,
+ "nodeType": "ExpressionStatement",
+ "src": "166:28:5"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 1278,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 1269,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 1268,
+ "name": "onlyOwner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1450,
+ "src": "150:9:5",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "150:9:5"
+ }
+ ],
+ "name": "setGovernance",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1267,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1266,
+ "name": "govAddress",
+ "nodeType": "VariableDeclaration",
+ "scope": 1278,
+ "src": "123:18:5",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1265,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "123:7:5",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "122:20:5"
+ },
+ "returnParameters": {
+ "id": 1270,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "160:0:5"
+ },
+ "scope": 1279,
+ "src": "100:99:5",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ }
+ ],
+ "scope": 1280,
+ "src": "55:147:5"
+ }
+ ],
+ "src": "0:203:5"
+ },
+ "legacyAST": {
+ "absolutePath": "/Users/aitjcize/Work/tangerine-network/node-staker/contracts/test/NodeStakerMock.sol",
+ "exportedSymbols": {
+ "NodeStakerMock": [
+ 1279
+ ]
+ },
+ "id": 1280,
+ "nodeType": "SourceUnit",
+ "nodes": [
+ {
+ "id": 1261,
+ "literals": [
+ "solidity",
+ "^",
+ "0.5",
+ ".11"
+ ],
+ "nodeType": "PragmaDirective",
+ "src": "0:24:5"
+ },
+ {
+ "absolutePath": "/Users/aitjcize/Work/tangerine-network/node-staker/contracts/NodeStaker.sol",
+ "file": "../NodeStaker.sol",
+ "id": 1262,
+ "nodeType": "ImportDirective",
+ "scope": 1280,
+ "sourceUnit": 862,
+ "src": "26:27:5",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "baseContracts": [
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 1263,
+ "name": "NodeStaker",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 861,
+ "src": "82:10:5",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_NodeStaker_$861",
+ "typeString": "contract NodeStaker"
+ }
+ },
+ "id": 1264,
+ "nodeType": "InheritanceSpecifier",
+ "src": "82:10:5"
+ }
+ ],
+ "contractDependencies": [
+ 46,
+ 861,
+ 1516
+ ],
+ "contractKind": "contract",
+ "documentation": null,
+ "fullyImplemented": true,
+ "id": 1279,
+ "linearizedBaseContracts": [
+ 1279,
+ 861,
+ 46,
+ 1516
+ ],
+ "name": "NodeStakerMock",
+ "nodeType": "ContractDefinition",
+ "nodes": [
+ {
+ "body": {
+ "id": 1277,
+ "nodeType": "Block",
+ "src": "160:39:5",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1275,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 1271,
+ "name": "gov",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 505,
+ "src": "166:3:5",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Governance_$430",
+ "typeString": "contract Governance"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1273,
+ "name": "govAddress",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1266,
+ "src": "183:10:5",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 1272,
+ "name": "Governance",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 430,
+ "src": "172:10:5",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_contract$_Governance_$430_$",
+ "typeString": "type(contract Governance)"
+ }
+ },
+ "id": 1274,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "172:22:5",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Governance_$430",
+ "typeString": "contract Governance"
+ }
+ },
+ "src": "166:28:5",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Governance_$430",
+ "typeString": "contract Governance"
+ }
+ },
+ "id": 1276,
+ "nodeType": "ExpressionStatement",
+ "src": "166:28:5"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 1278,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 1269,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 1268,
+ "name": "onlyOwner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1450,
+ "src": "150:9:5",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "150:9:5"
+ }
+ ],
+ "name": "setGovernance",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1267,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1266,
+ "name": "govAddress",
+ "nodeType": "VariableDeclaration",
+ "scope": 1278,
+ "src": "123:18:5",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1265,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "123:7:5",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "122:20:5"
+ },
+ "returnParameters": {
+ "id": 1270,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "160:0:5"
+ },
+ "scope": 1279,
+ "src": "100:99:5",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ }
+ ],
+ "scope": 1280,
+ "src": "55:147:5"
+ }
+ ],
+ "src": "0:203:5"
+ },
+ "compiler": {
+ "name": "solc",
+ "version": "0.5.11+commit.c082d0b4.Emscripten.clang"
+ },
+ "networks": {},
+ "schemaVersion": "3.0.11",
+ "updatedAt": "2019-09-29T03:11:52.538Z",
+ "devdoc": {
+ "methods": {
+ "isOwner()": {
+ "return": "true if `msg.sender` is the owner of the contract."
+ },
+ "owner()": {
+ "return": "the address of the owner."
+ },
+ "register(bytes,string,string,string,string)": {
+ "details": "register a node"
+ },
+ "renounceOwnership()": {
+ "details": "Allows the current owner to relinquish control of the contract."
+ },
+ "replaceNodePublicKey(bytes)": {
+ "details": "replace node public key"
+ },
+ "transferOwnership(address)": {
+ "details": "Allows the current owner to transfer control of the contract to a newOwner.",
+ "params": {
+ "newOwner": "The address to transfer ownership to."
+ }
+ },
+ "transferOwnershipByFoundation(address)": {
+ "details": "transfer node ownership"
+ },
+ "unstakeByFoundation(uint256)": {
+ "details": "unstake by foundation"
+ },
+ "vest(uint256)": {
+ "details": "vest"
+ },
+ "withdraw()": {
+ "details": "withdraw balance"
+ }
+ }
+ },
+ "userdoc": {
+ "methods": {
+ "renounceOwnership()": {
+ "notice": "Renouncing to ownership will leave the contract without an owner. It will not be possible to call the functions with the `onlyOwner` modifier anymore."
+ },
+ "unstakeByFoundation(uint256)": {
+ "notice": "only can unstake vested amount"
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/build/contracts/Ownable.json b/build/contracts/Ownable.json
new file mode 100644
index 0000000..6ebfdaf
--- /dev/null
+++ b/build/contracts/Ownable.json
@@ -0,0 +1,2841 @@
+{
+ "contractName": "Ownable",
+ "abi": [
+ {
+ "inputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "constructor"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "previousOwner",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "newOwner",
+ "type": "address"
+ }
+ ],
+ "name": "OwnershipTransferred",
+ "type": "event"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "owner",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "isOwner",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [],
+ "name": "renounceOwnership",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "newOwner",
+ "type": "address"
+ }
+ ],
+ "name": "transferOwnership",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ }
+ ],
+ "metadata": "{\"compiler\":{\"version\":\"0.5.11+commit.c082d0b4\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"The Ownable contract has an owner address, and provides basic authorization control functions, this simplifies the implementation of \\\"user permissions\\\".\",\"methods\":{\"constructor\":{\"details\":\"The Ownable constructor sets the original `owner` of the contract to the sender account.\"},\"isOwner()\":{\"return\":\"true if `msg.sender` is the owner of the contract.\"},\"owner()\":{\"return\":\"the address of the owner.\"},\"renounceOwnership()\":{\"details\":\"Allows the current owner to relinquish control of the contract.\"},\"transferOwnership(address)\":{\"details\":\"Allows the current owner to transfer control of the contract to a newOwner.\",\"params\":{\"newOwner\":\"The address to transfer ownership to.\"}}},\"title\":\"Ownable\"},\"userdoc\":{\"methods\":{\"renounceOwnership()\":{\"notice\":\"Renouncing to ownership will leave the contract without an owner. It will not be possible to call the functions with the `onlyOwner` modifier anymore.\"}}}},\"settings\":{\"compilationTarget\":{\"openzeppelin-solidity/contracts/ownership/Ownable.sol\":\"Ownable\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"openzeppelin-solidity/contracts/ownership/Ownable.sol\":{\"keccak256\":\"0x980de387a1a020a498f53d00f89fecebb12c949a17e8f160093c0303ede2b786\",\"urls\":[\"bzz-raw://f07a2c393caa85f62f0aaa461e3edd50aa59371d4209778ba0558d7f8b4b856c\",\"dweb:/ipfs/QmeN3ZiYGSjCnQFeYaJNgoXjF9eDue1g3e9pqManRkeBtV\"]}},\"version\":1}",
+ "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": [
+ 1516
+ ]
+ },
+ "id": 1517,
+ "nodeType": "SourceUnit",
+ "nodes": [
+ {
+ "id": 1409,
+ "literals": [
+ "solidity",
+ "^",
+ "0.5",
+ ".0"
+ ],
+ "nodeType": "PragmaDirective",
+ "src": "0:23:7"
+ },
+ {
+ "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": 1516,
+ "linearizedBaseContracts": [
+ 1516
+ ],
+ "name": "Ownable",
+ "nodeType": "ContractDefinition",
+ "nodes": [
+ {
+ "constant": false,
+ "id": 1411,
+ "name": "_owner",
+ "nodeType": "VariableDeclaration",
+ "scope": 1516,
+ "src": "238:22:7",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1410,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "238:7:7",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "private"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 1417,
+ "name": "OwnershipTransferred",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 1416,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1413,
+ "indexed": true,
+ "name": "previousOwner",
+ "nodeType": "VariableDeclaration",
+ "scope": 1417,
+ "src": "294:29:7",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1412,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "294:7:7",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1415,
+ "indexed": true,
+ "name": "newOwner",
+ "nodeType": "VariableDeclaration",
+ "scope": 1417,
+ "src": "325:24:7",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1414,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "325:7:7",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "293:57:7"
+ },
+ "src": "267:84:7"
+ },
+ {
+ "body": {
+ "id": 1432,
+ "nodeType": "Block",
+ "src": "505:91:7",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1423,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 1420,
+ "name": "_owner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1411,
+ "src": "515:6:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1421,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "524:3:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1422,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "524:10:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "src": "515:19:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 1424,
+ "nodeType": "ExpressionStatement",
+ "src": "515:19:7"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 1427,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "578:1:7",
+ "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": 1426,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "570:7:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 1428,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "570:10:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1429,
+ "name": "_owner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1411,
+ "src": "582:6:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 1425,
+ "name": "OwnershipTransferred",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1417,
+ "src": "549:20:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
+ "typeString": "function (address,address)"
+ }
+ },
+ "id": 1430,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "549:40:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1431,
+ "nodeType": "EmitStatement",
+ "src": "544:45:7"
+ }
+ ]
+ },
+ "documentation": "@dev The Ownable constructor sets the original `owner` of the contract to the sender\naccount.",
+ "id": 1433,
+ "implemented": true,
+ "kind": "constructor",
+ "modifiers": [],
+ "name": "",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1418,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "493:2:7"
+ },
+ "returnParameters": {
+ "id": 1419,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "505:0:7"
+ },
+ "scope": 1516,
+ "src": "481:115:7",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "internal"
+ },
+ {
+ "body": {
+ "id": 1440,
+ "nodeType": "Block",
+ "src": "706:30:7",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1438,
+ "name": "_owner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1411,
+ "src": "723:6:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "functionReturnParameters": 1437,
+ "id": 1439,
+ "nodeType": "Return",
+ "src": "716:13:7"
+ }
+ ]
+ },
+ "documentation": "@return the address of the owner.",
+ "id": 1441,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "owner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1434,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "673:2:7"
+ },
+ "returnParameters": {
+ "id": 1437,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1436,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 1441,
+ "src": "697:7:7",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1435,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "697:7:7",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "696:9:7"
+ },
+ "scope": 1516,
+ "src": "659:77:7",
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 1449,
+ "nodeType": "Block",
+ "src": "845:46:7",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 1444,
+ "name": "isOwner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1461,
+ "src": "863:7:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$",
+ "typeString": "function () view returns (bool)"
+ }
+ },
+ "id": 1445,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "863:9:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ ],
+ "id": 1443,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 1534,
+ 1535
+ ],
+ "referencedDeclaration": 1534,
+ "src": "855:7:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
+ "typeString": "function (bool) pure"
+ }
+ },
+ "id": 1446,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "855:18:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1447,
+ "nodeType": "ExpressionStatement",
+ "src": "855:18:7"
+ },
+ {
+ "id": 1448,
+ "nodeType": "PlaceholderStatement",
+ "src": "883:1:7"
+ }
+ ]
+ },
+ "documentation": "@dev Throws if called by any account other than the owner.",
+ "id": 1450,
+ "name": "onlyOwner",
+ "nodeType": "ModifierDefinition",
+ "parameters": {
+ "id": 1442,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "842:2:7"
+ },
+ "src": "824:67:7",
+ "visibility": "internal"
+ },
+ {
+ "body": {
+ "id": 1460,
+ "nodeType": "Block",
+ "src": "1025:44:7",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 1458,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1455,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "1042:3:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1456,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "1042:10:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 1457,
+ "name": "_owner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1411,
+ "src": "1056:6:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "1042:20:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "functionReturnParameters": 1454,
+ "id": 1459,
+ "nodeType": "Return",
+ "src": "1035:27:7"
+ }
+ ]
+ },
+ "documentation": "@return true if `msg.sender` is the owner of the contract.",
+ "id": 1461,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "isOwner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1451,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "995:2:7"
+ },
+ "returnParameters": {
+ "id": 1454,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1453,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 1461,
+ "src": "1019:4:7",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 1452,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "1019:4:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "1018:6:7"
+ },
+ "scope": 1516,
+ "src": "979:90:7",
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 1479,
+ "nodeType": "Block",
+ "src": "1393:91:7",
+ "statements": [
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1467,
+ "name": "_owner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1411,
+ "src": "1429:6:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 1469,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "1445:1:7",
+ "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": 1468,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "1437:7:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 1470,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1437:10:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ ],
+ "id": 1466,
+ "name": "OwnershipTransferred",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1417,
+ "src": "1408:20:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
+ "typeString": "function (address,address)"
+ }
+ },
+ "id": 1471,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1408:40:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1472,
+ "nodeType": "EmitStatement",
+ "src": "1403:45:7"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1477,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 1473,
+ "name": "_owner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1411,
+ "src": "1458:6:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 1475,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "1475:1:7",
+ "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": 1474,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "1467:7:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 1476,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1467:10:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "src": "1458:19:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 1478,
+ "nodeType": "ExpressionStatement",
+ "src": "1458:19:7"
+ }
+ ]
+ },
+ "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": 1480,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 1464,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 1463,
+ "name": "onlyOwner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1450,
+ "src": "1383:9:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "1383:9:7"
+ }
+ ],
+ "name": "renounceOwnership",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1462,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "1373:2:7"
+ },
+ "returnParameters": {
+ "id": 1465,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "1393:0:7"
+ },
+ "scope": 1516,
+ "src": "1347:137:7",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 1491,
+ "nodeType": "Block",
+ "src": "1717:45:7",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1488,
+ "name": "newOwner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1482,
+ "src": "1746:8:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 1487,
+ "name": "_transferOwnership",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1515,
+ "src": "1727:18:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
+ "typeString": "function (address)"
+ }
+ },
+ "id": 1489,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1727:28:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1490,
+ "nodeType": "ExpressionStatement",
+ "src": "1727:28:7"
+ }
+ ]
+ },
+ "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": 1492,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 1485,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 1484,
+ "name": "onlyOwner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1450,
+ "src": "1707:9:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "1707:9:7"
+ }
+ ],
+ "name": "transferOwnership",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1483,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1482,
+ "name": "newOwner",
+ "nodeType": "VariableDeclaration",
+ "scope": 1492,
+ "src": "1682:16:7",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1481,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "1682:7:7",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "1681:18:7"
+ },
+ "returnParameters": {
+ "id": 1486,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "1717:0:7"
+ },
+ "scope": 1516,
+ "src": "1655:107:7",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 1514,
+ "nodeType": "Block",
+ "src": "1961:128:7",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 1502,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 1498,
+ "name": "newOwner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1494,
+ "src": "1979:8:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "!=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 1500,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "1999:1:7",
+ "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": 1499,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "1991:7:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 1501,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1991:10:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "src": "1979:22:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ ],
+ "id": 1497,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 1534,
+ 1535
+ ],
+ "referencedDeclaration": 1534,
+ "src": "1971:7:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
+ "typeString": "function (bool) pure"
+ }
+ },
+ "id": 1503,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1971:31:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1504,
+ "nodeType": "ExpressionStatement",
+ "src": "1971:31:7"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1506,
+ "name": "_owner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1411,
+ "src": "2038:6:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1507,
+ "name": "newOwner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1494,
+ "src": "2046:8:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 1505,
+ "name": "OwnershipTransferred",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1417,
+ "src": "2017:20:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
+ "typeString": "function (address,address)"
+ }
+ },
+ "id": 1508,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2017:38:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1509,
+ "nodeType": "EmitStatement",
+ "src": "2012:43:7"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1512,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 1510,
+ "name": "_owner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1411,
+ "src": "2065:6:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 1511,
+ "name": "newOwner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1494,
+ "src": "2074:8:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "2065:17:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 1513,
+ "nodeType": "ExpressionStatement",
+ "src": "2065:17:7"
+ }
+ ]
+ },
+ "documentation": "@dev Transfers control of the contract to a newOwner.\n@param newOwner The address to transfer ownership to.",
+ "id": 1515,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "_transferOwnership",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1495,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1494,
+ "name": "newOwner",
+ "nodeType": "VariableDeclaration",
+ "scope": 1515,
+ "src": "1934:16:7",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1493,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "1934:7:7",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "1933:18:7"
+ },
+ "returnParameters": {
+ "id": 1496,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "1961:0:7"
+ },
+ "scope": 1516,
+ "src": "1906:183:7",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "internal"
+ }
+ ],
+ "scope": 1517,
+ "src": "215:1876:7"
+ }
+ ],
+ "src": "0:2092:7"
+ },
+ "legacyAST": {
+ "absolutePath": "openzeppelin-solidity/contracts/ownership/Ownable.sol",
+ "exportedSymbols": {
+ "Ownable": [
+ 1516
+ ]
+ },
+ "id": 1517,
+ "nodeType": "SourceUnit",
+ "nodes": [
+ {
+ "id": 1409,
+ "literals": [
+ "solidity",
+ "^",
+ "0.5",
+ ".0"
+ ],
+ "nodeType": "PragmaDirective",
+ "src": "0:23:7"
+ },
+ {
+ "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": 1516,
+ "linearizedBaseContracts": [
+ 1516
+ ],
+ "name": "Ownable",
+ "nodeType": "ContractDefinition",
+ "nodes": [
+ {
+ "constant": false,
+ "id": 1411,
+ "name": "_owner",
+ "nodeType": "VariableDeclaration",
+ "scope": 1516,
+ "src": "238:22:7",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1410,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "238:7:7",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "private"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 1417,
+ "name": "OwnershipTransferred",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 1416,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1413,
+ "indexed": true,
+ "name": "previousOwner",
+ "nodeType": "VariableDeclaration",
+ "scope": 1417,
+ "src": "294:29:7",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1412,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "294:7:7",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1415,
+ "indexed": true,
+ "name": "newOwner",
+ "nodeType": "VariableDeclaration",
+ "scope": 1417,
+ "src": "325:24:7",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1414,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "325:7:7",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "293:57:7"
+ },
+ "src": "267:84:7"
+ },
+ {
+ "body": {
+ "id": 1432,
+ "nodeType": "Block",
+ "src": "505:91:7",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1423,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 1420,
+ "name": "_owner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1411,
+ "src": "515:6:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1421,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "524:3:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1422,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "524:10:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "src": "515:19:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 1424,
+ "nodeType": "ExpressionStatement",
+ "src": "515:19:7"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 1427,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "578:1:7",
+ "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": 1426,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "570:7:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 1428,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "570:10:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1429,
+ "name": "_owner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1411,
+ "src": "582:6:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 1425,
+ "name": "OwnershipTransferred",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1417,
+ "src": "549:20:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
+ "typeString": "function (address,address)"
+ }
+ },
+ "id": 1430,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "549:40:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1431,
+ "nodeType": "EmitStatement",
+ "src": "544:45:7"
+ }
+ ]
+ },
+ "documentation": "@dev The Ownable constructor sets the original `owner` of the contract to the sender\naccount.",
+ "id": 1433,
+ "implemented": true,
+ "kind": "constructor",
+ "modifiers": [],
+ "name": "",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1418,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "493:2:7"
+ },
+ "returnParameters": {
+ "id": 1419,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "505:0:7"
+ },
+ "scope": 1516,
+ "src": "481:115:7",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "internal"
+ },
+ {
+ "body": {
+ "id": 1440,
+ "nodeType": "Block",
+ "src": "706:30:7",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1438,
+ "name": "_owner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1411,
+ "src": "723:6:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "functionReturnParameters": 1437,
+ "id": 1439,
+ "nodeType": "Return",
+ "src": "716:13:7"
+ }
+ ]
+ },
+ "documentation": "@return the address of the owner.",
+ "id": 1441,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "owner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1434,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "673:2:7"
+ },
+ "returnParameters": {
+ "id": 1437,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1436,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 1441,
+ "src": "697:7:7",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1435,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "697:7:7",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "696:9:7"
+ },
+ "scope": 1516,
+ "src": "659:77:7",
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 1449,
+ "nodeType": "Block",
+ "src": "845:46:7",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 1444,
+ "name": "isOwner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1461,
+ "src": "863:7:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$",
+ "typeString": "function () view returns (bool)"
+ }
+ },
+ "id": 1445,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "863:9:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ ],
+ "id": 1443,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 1534,
+ 1535
+ ],
+ "referencedDeclaration": 1534,
+ "src": "855:7:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
+ "typeString": "function (bool) pure"
+ }
+ },
+ "id": 1446,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "855:18:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1447,
+ "nodeType": "ExpressionStatement",
+ "src": "855:18:7"
+ },
+ {
+ "id": 1448,
+ "nodeType": "PlaceholderStatement",
+ "src": "883:1:7"
+ }
+ ]
+ },
+ "documentation": "@dev Throws if called by any account other than the owner.",
+ "id": 1450,
+ "name": "onlyOwner",
+ "nodeType": "ModifierDefinition",
+ "parameters": {
+ "id": 1442,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "842:2:7"
+ },
+ "src": "824:67:7",
+ "visibility": "internal"
+ },
+ {
+ "body": {
+ "id": 1460,
+ "nodeType": "Block",
+ "src": "1025:44:7",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 1458,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1455,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1531,
+ "src": "1042:3:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1456,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "1042:10:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 1457,
+ "name": "_owner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1411,
+ "src": "1056:6:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "1042:20:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "functionReturnParameters": 1454,
+ "id": 1459,
+ "nodeType": "Return",
+ "src": "1035:27:7"
+ }
+ ]
+ },
+ "documentation": "@return true if `msg.sender` is the owner of the contract.",
+ "id": 1461,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "isOwner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1451,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "995:2:7"
+ },
+ "returnParameters": {
+ "id": 1454,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1453,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 1461,
+ "src": "1019:4:7",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 1452,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "1019:4:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "1018:6:7"
+ },
+ "scope": 1516,
+ "src": "979:90:7",
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 1479,
+ "nodeType": "Block",
+ "src": "1393:91:7",
+ "statements": [
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1467,
+ "name": "_owner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1411,
+ "src": "1429:6:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 1469,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "1445:1:7",
+ "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": 1468,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "1437:7:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 1470,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1437:10:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ ],
+ "id": 1466,
+ "name": "OwnershipTransferred",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1417,
+ "src": "1408:20:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
+ "typeString": "function (address,address)"
+ }
+ },
+ "id": 1471,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1408:40:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1472,
+ "nodeType": "EmitStatement",
+ "src": "1403:45:7"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1477,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 1473,
+ "name": "_owner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1411,
+ "src": "1458:6:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 1475,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "1475:1:7",
+ "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": 1474,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "1467:7:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 1476,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1467:10:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "src": "1458:19:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 1478,
+ "nodeType": "ExpressionStatement",
+ "src": "1458:19:7"
+ }
+ ]
+ },
+ "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": 1480,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 1464,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 1463,
+ "name": "onlyOwner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1450,
+ "src": "1383:9:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "1383:9:7"
+ }
+ ],
+ "name": "renounceOwnership",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1462,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "1373:2:7"
+ },
+ "returnParameters": {
+ "id": 1465,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "1393:0:7"
+ },
+ "scope": 1516,
+ "src": "1347:137:7",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 1491,
+ "nodeType": "Block",
+ "src": "1717:45:7",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1488,
+ "name": "newOwner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1482,
+ "src": "1746:8:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 1487,
+ "name": "_transferOwnership",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1515,
+ "src": "1727:18:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
+ "typeString": "function (address)"
+ }
+ },
+ "id": 1489,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1727:28:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1490,
+ "nodeType": "ExpressionStatement",
+ "src": "1727:28:7"
+ }
+ ]
+ },
+ "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": 1492,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 1485,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 1484,
+ "name": "onlyOwner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1450,
+ "src": "1707:9:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "1707:9:7"
+ }
+ ],
+ "name": "transferOwnership",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1483,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1482,
+ "name": "newOwner",
+ "nodeType": "VariableDeclaration",
+ "scope": 1492,
+ "src": "1682:16:7",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1481,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "1682:7:7",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "1681:18:7"
+ },
+ "returnParameters": {
+ "id": 1486,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "1717:0:7"
+ },
+ "scope": 1516,
+ "src": "1655:107:7",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 1514,
+ "nodeType": "Block",
+ "src": "1961:128:7",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 1502,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 1498,
+ "name": "newOwner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1494,
+ "src": "1979:8:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "!=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 1500,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "1999:1:7",
+ "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": 1499,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "1991:7:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 1501,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1991:10:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "src": "1979:22:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ ],
+ "id": 1497,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 1534,
+ 1535
+ ],
+ "referencedDeclaration": 1534,
+ "src": "1971:7:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
+ "typeString": "function (bool) pure"
+ }
+ },
+ "id": 1503,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1971:31:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1504,
+ "nodeType": "ExpressionStatement",
+ "src": "1971:31:7"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1506,
+ "name": "_owner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1411,
+ "src": "2038:6:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1507,
+ "name": "newOwner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1494,
+ "src": "2046:8:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 1505,
+ "name": "OwnershipTransferred",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1417,
+ "src": "2017:20:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
+ "typeString": "function (address,address)"
+ }
+ },
+ "id": 1508,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2017:38:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1509,
+ "nodeType": "EmitStatement",
+ "src": "2012:43:7"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1512,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 1510,
+ "name": "_owner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1411,
+ "src": "2065:6:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 1511,
+ "name": "newOwner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1494,
+ "src": "2074:8:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "2065:17:7",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 1513,
+ "nodeType": "ExpressionStatement",
+ "src": "2065:17:7"
+ }
+ ]
+ },
+ "documentation": "@dev Transfers control of the contract to a newOwner.\n@param newOwner The address to transfer ownership to.",
+ "id": 1515,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "_transferOwnership",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1495,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1494,
+ "name": "newOwner",
+ "nodeType": "VariableDeclaration",
+ "scope": 1515,
+ "src": "1934:16:7",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1493,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "1934:7:7",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "1933:18:7"
+ },
+ "returnParameters": {
+ "id": 1496,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "1961:0:7"
+ },
+ "scope": 1516,
+ "src": "1906:183:7",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "internal"
+ }
+ ],
+ "scope": 1517,
+ "src": "215:1876:7"
+ }
+ ],
+ "src": "0:2092:7"
+ },
+ "compiler": {
+ "name": "solc",
+ "version": "0.5.11+commit.c082d0b4.Emscripten.clang"
+ },
+ "networks": {},
+ "schemaVersion": "3.0.11",
+ "updatedAt": "2019-09-29T03:09:06.448Z",
+ "devdoc": {
+ "details": "The Ownable contract has an owner address, and provides basic authorization control functions, this simplifies the implementation of \"user permissions\".",
+ "methods": {
+ "constructor": {
+ "details": "The Ownable constructor sets the original `owner` of the contract to the sender account."
+ },
+ "isOwner()": {
+ "return": "true if `msg.sender` is the owner of the contract."
+ },
+ "owner()": {
+ "return": "the address of the owner."
+ },
+ "renounceOwnership()": {
+ "details": "Allows the current owner to relinquish control of the contract."
+ },
+ "transferOwnership(address)": {
+ "details": "Allows the current owner to transfer control of the contract to a newOwner.",
+ "params": {
+ "newOwner": "The address to transfer ownership to."
+ }
+ }
+ },
+ "title": "Ownable"
+ },
+ "userdoc": {
+ "methods": {
+ "renounceOwnership()": {
+ "notice": "Renouncing to ownership will leave the contract without an owner. It will not be possible to call the functions with the `onlyOwner` modifier anymore."
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/build/contracts/SafeMath.json b/build/contracts/SafeMath.json
new file mode 100644
index 0000000..ef1adcc
--- /dev/null
+++ b/build/contracts/SafeMath.json
@@ -0,0 +1,3288 @@
+{
+ "contractName": "SafeMath",
+ "abi": [],
+ "metadata": "{\"compiler\":{\"version\":\"0.5.11+commit.c082d0b4\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Unsigned math operations with safety checks that revert on error\",\"methods\":{},\"title\":\"SafeMath\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"openzeppelin-solidity/contracts/math/SafeMath.sol\":\"SafeMath\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x965012d27b4262d7a41f5028cbb30c51ebd9ecd4be8fb30380aaa7a3c64fbc8b\",\"urls\":[\"bzz-raw://1eb493553b27efd46c231a836a83ce50d215639feb97b4aac9f301d0fd034ff5\",\"dweb:/ipfs/QmbMdvSXcqGKxeeYvzF3VrWpoHQyVzMXBhzhAokF2Gdymv\"]}},\"version\":1}",
+ "bytecode": "0x60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158206a7caa2cd9347d63bb75ccadb24de151819a5dc082d5ffa37a3787518b6dfc4e64736f6c634300050b0032",
+ "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158206a7caa2cd9347d63bb75ccadb24de151819a5dc082d5ffa37a3787518b6dfc4e64736f6c634300050b0032",
+ "sourceMap": "125:1726:6:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24",
+ "deployedSourceMap": "125:1726:6:-;;;;;;;;",
+ "source": "pragma solidity ^0.5.0;\n\n/**\n * @title SafeMath\n * @dev Unsigned math operations with safety checks that revert on error\n */\nlibrary SafeMath {\n /**\n * @dev Multiplies two unsigned integers, reverts on overflow.\n */\n function mul(uint256 a, uint256 b) internal pure returns (uint256) {\n // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\n // benefit is lost if 'b' is also tested.\n // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522\n if (a == 0) {\n return 0;\n }\n\n uint256 c = a * b;\n require(c / a == b);\n\n return c;\n }\n\n /**\n * @dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero.\n */\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\n // Solidity only automatically asserts when dividing by 0\n require(b > 0);\n uint256 c = a / b;\n // assert(a == b * c + a % b); // There is no case in which this doesn't hold\n\n return c;\n }\n\n /**\n * @dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend).\n */\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n require(b <= a);\n uint256 c = a - b;\n\n return c;\n }\n\n /**\n * @dev Adds two unsigned integers, reverts on overflow.\n */\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n uint256 c = a + b;\n require(c >= a);\n\n return c;\n }\n\n /**\n * @dev Divides two unsigned integers and returns the remainder (unsigned integer modulo),\n * reverts when dividing by zero.\n */\n function mod(uint256 a, uint256 b) internal pure returns (uint256) {\n require(b != 0);\n return a % b;\n }\n}\n",
+ "sourcePath": "openzeppelin-solidity/contracts/math/SafeMath.sol",
+ "ast": {
+ "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol",
+ "exportedSymbols": {
+ "SafeMath": [
+ 1407
+ ]
+ },
+ "id": 1408,
+ "nodeType": "SourceUnit",
+ "nodes": [
+ {
+ "id": 1281,
+ "literals": [
+ "solidity",
+ "^",
+ "0.5",
+ ".0"
+ ],
+ "nodeType": "PragmaDirective",
+ "src": "0:23:6"
+ },
+ {
+ "baseContracts": [],
+ "contractDependencies": [],
+ "contractKind": "library",
+ "documentation": "@title SafeMath\n@dev Unsigned math operations with safety checks that revert on error",
+ "fullyImplemented": true,
+ "id": 1407,
+ "linearizedBaseContracts": [
+ 1407
+ ],
+ "name": "SafeMath",
+ "nodeType": "ContractDefinition",
+ "nodes": [
+ {
+ "body": {
+ "id": 1313,
+ "nodeType": "Block",
+ "src": "296:354:6",
+ "statements": [
+ {
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 1292,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 1290,
+ "name": "a",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1283,
+ "src": "527:1:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 1291,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "532:1:6",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "src": "527:6:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": null,
+ "id": 1296,
+ "nodeType": "IfStatement",
+ "src": "523:45:6",
+ "trueBody": {
+ "id": 1295,
+ "nodeType": "Block",
+ "src": "535:33:6",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 1293,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "556:1:6",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "functionReturnParameters": 1289,
+ "id": 1294,
+ "nodeType": "Return",
+ "src": "549:8:6"
+ }
+ ]
+ }
+ },
+ {
+ "assignments": [
+ 1298
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 1298,
+ "name": "c",
+ "nodeType": "VariableDeclaration",
+ "scope": 1313,
+ "src": "578:9:6",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 1297,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "578:7:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 1302,
+ "initialValue": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 1301,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 1299,
+ "name": "a",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1283,
+ "src": "590:1:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "*",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 1300,
+ "name": "b",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1285,
+ "src": "594:1:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "590:5:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "578:17:6"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 1308,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 1306,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 1304,
+ "name": "c",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1298,
+ "src": "613:1:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "/",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 1305,
+ "name": "a",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1283,
+ "src": "617:1:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "613:5:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 1307,
+ "name": "b",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1285,
+ "src": "622:1:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "613:10:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ ],
+ "id": 1303,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 1534,
+ 1535
+ ],
+ "referencedDeclaration": 1534,
+ "src": "605:7:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
+ "typeString": "function (bool) pure"
+ }
+ },
+ "id": 1309,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "605:19:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1310,
+ "nodeType": "ExpressionStatement",
+ "src": "605:19:6"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1311,
+ "name": "c",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1298,
+ "src": "642:1:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "functionReturnParameters": 1289,
+ "id": 1312,
+ "nodeType": "Return",
+ "src": "635:8:6"
+ }
+ ]
+ },
+ "documentation": "@dev Multiplies two unsigned integers, reverts on overflow.",
+ "id": 1314,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "mul",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1286,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1283,
+ "name": "a",
+ "nodeType": "VariableDeclaration",
+ "scope": 1314,
+ "src": "242:9:6",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 1282,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "242:7:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1285,
+ "name": "b",
+ "nodeType": "VariableDeclaration",
+ "scope": 1314,
+ "src": "253:9:6",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 1284,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "253:7:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "241:22:6"
+ },
+ "returnParameters": {
+ "id": 1289,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1288,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 1314,
+ "src": "287:7:6",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 1287,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "287:7:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "286:9:6"
+ },
+ "scope": 1407,
+ "src": "229:421:6",
+ "stateMutability": "pure",
+ "superFunction": null,
+ "visibility": "internal"
+ },
+ {
+ "body": {
+ "id": 1337,
+ "nodeType": "Block",
+ "src": "845:229:6",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 1326,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 1324,
+ "name": "b",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1318,
+ "src": "929:1:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": ">",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 1325,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "933:1:6",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "src": "929:5:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ ],
+ "id": 1323,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 1534,
+ 1535
+ ],
+ "referencedDeclaration": 1534,
+ "src": "921:7:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
+ "typeString": "function (bool) pure"
+ }
+ },
+ "id": 1327,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "921:14:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1328,
+ "nodeType": "ExpressionStatement",
+ "src": "921:14:6"
+ },
+ {
+ "assignments": [
+ 1330
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 1330,
+ "name": "c",
+ "nodeType": "VariableDeclaration",
+ "scope": 1337,
+ "src": "945:9:6",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 1329,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "945:7:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 1334,
+ "initialValue": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 1333,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 1331,
+ "name": "a",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1316,
+ "src": "957:1:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "/",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 1332,
+ "name": "b",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1318,
+ "src": "961:1:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "957:5:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "945:17:6"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1335,
+ "name": "c",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1330,
+ "src": "1066:1:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "functionReturnParameters": 1322,
+ "id": 1336,
+ "nodeType": "Return",
+ "src": "1059:8:6"
+ }
+ ]
+ },
+ "documentation": "@dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero.",
+ "id": 1338,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "div",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1319,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1316,
+ "name": "a",
+ "nodeType": "VariableDeclaration",
+ "scope": 1338,
+ "src": "791:9:6",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 1315,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "791:7:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1318,
+ "name": "b",
+ "nodeType": "VariableDeclaration",
+ "scope": 1338,
+ "src": "802:9:6",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 1317,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "802:7:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "790:22:6"
+ },
+ "returnParameters": {
+ "id": 1322,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1321,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 1338,
+ "src": "836:7:6",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 1320,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "836:7:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "835:9:6"
+ },
+ "scope": 1407,
+ "src": "778:296:6",
+ "stateMutability": "pure",
+ "superFunction": null,
+ "visibility": "internal"
+ },
+ {
+ "body": {
+ "id": 1361,
+ "nodeType": "Block",
+ "src": "1272:78:6",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 1350,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 1348,
+ "name": "b",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1342,
+ "src": "1290:1:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "<=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 1349,
+ "name": "a",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1340,
+ "src": "1295:1:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "1290:6:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ ],
+ "id": 1347,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 1534,
+ 1535
+ ],
+ "referencedDeclaration": 1534,
+ "src": "1282:7:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
+ "typeString": "function (bool) pure"
+ }
+ },
+ "id": 1351,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1282:15:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1352,
+ "nodeType": "ExpressionStatement",
+ "src": "1282:15:6"
+ },
+ {
+ "assignments": [
+ 1354
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 1354,
+ "name": "c",
+ "nodeType": "VariableDeclaration",
+ "scope": 1361,
+ "src": "1307:9:6",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 1353,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1307:7:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 1358,
+ "initialValue": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 1357,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 1355,
+ "name": "a",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1340,
+ "src": "1319:1:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "-",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 1356,
+ "name": "b",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1342,
+ "src": "1323:1:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "1319:5:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "1307:17:6"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1359,
+ "name": "c",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1354,
+ "src": "1342:1:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "functionReturnParameters": 1346,
+ "id": 1360,
+ "nodeType": "Return",
+ "src": "1335:8:6"
+ }
+ ]
+ },
+ "documentation": "@dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend).",
+ "id": 1362,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "sub",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1343,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1340,
+ "name": "a",
+ "nodeType": "VariableDeclaration",
+ "scope": 1362,
+ "src": "1218:9:6",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 1339,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1218:7:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1342,
+ "name": "b",
+ "nodeType": "VariableDeclaration",
+ "scope": 1362,
+ "src": "1229:9:6",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 1341,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1229:7:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "1217:22:6"
+ },
+ "returnParameters": {
+ "id": 1346,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1345,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 1362,
+ "src": "1263:7:6",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 1344,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1263:7:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "1262:9:6"
+ },
+ "scope": 1407,
+ "src": "1205:145:6",
+ "stateMutability": "pure",
+ "superFunction": null,
+ "visibility": "internal"
+ },
+ {
+ "body": {
+ "id": 1385,
+ "nodeType": "Block",
+ "src": "1498:78:6",
+ "statements": [
+ {
+ "assignments": [
+ 1372
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 1372,
+ "name": "c",
+ "nodeType": "VariableDeclaration",
+ "scope": 1385,
+ "src": "1508:9:6",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 1371,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1508:7:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 1376,
+ "initialValue": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 1375,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 1373,
+ "name": "a",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1364,
+ "src": "1520:1:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "+",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 1374,
+ "name": "b",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1366,
+ "src": "1524:1:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "1520:5:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "1508:17:6"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 1380,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 1378,
+ "name": "c",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1372,
+ "src": "1543:1:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": ">=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 1379,
+ "name": "a",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1364,
+ "src": "1548:1:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "1543:6:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ ],
+ "id": 1377,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 1534,
+ 1535
+ ],
+ "referencedDeclaration": 1534,
+ "src": "1535:7:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
+ "typeString": "function (bool) pure"
+ }
+ },
+ "id": 1381,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1535:15:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1382,
+ "nodeType": "ExpressionStatement",
+ "src": "1535:15:6"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1383,
+ "name": "c",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1372,
+ "src": "1568:1:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "functionReturnParameters": 1370,
+ "id": 1384,
+ "nodeType": "Return",
+ "src": "1561:8:6"
+ }
+ ]
+ },
+ "documentation": "@dev Adds two unsigned integers, reverts on overflow.",
+ "id": 1386,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "add",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1367,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1364,
+ "name": "a",
+ "nodeType": "VariableDeclaration",
+ "scope": 1386,
+ "src": "1444:9:6",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 1363,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1444:7:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1366,
+ "name": "b",
+ "nodeType": "VariableDeclaration",
+ "scope": 1386,
+ "src": "1455:9:6",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 1365,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1455:7:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "1443:22:6"
+ },
+ "returnParameters": {
+ "id": 1370,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1369,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 1386,
+ "src": "1489:7:6",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 1368,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1489:7:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "1488:9:6"
+ },
+ "scope": 1407,
+ "src": "1431:145:6",
+ "stateMutability": "pure",
+ "superFunction": null,
+ "visibility": "internal"
+ },
+ {
+ "body": {
+ "id": 1405,
+ "nodeType": "Block",
+ "src": "1795:54:6",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 1398,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 1396,
+ "name": "b",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1390,
+ "src": "1813:1:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "!=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 1397,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "1818:1:6",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "src": "1813:6:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ ],
+ "id": 1395,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 1534,
+ 1535
+ ],
+ "referencedDeclaration": 1534,
+ "src": "1805:7:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
+ "typeString": "function (bool) pure"
+ }
+ },
+ "id": 1399,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1805:15:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1400,
+ "nodeType": "ExpressionStatement",
+ "src": "1805:15:6"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 1403,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 1401,
+ "name": "a",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1388,
+ "src": "1837:1:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "%",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 1402,
+ "name": "b",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1390,
+ "src": "1841:1:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "1837:5:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "functionReturnParameters": 1394,
+ "id": 1404,
+ "nodeType": "Return",
+ "src": "1830:12:6"
+ }
+ ]
+ },
+ "documentation": "@dev Divides two unsigned integers and returns the remainder (unsigned integer modulo),\nreverts when dividing by zero.",
+ "id": 1406,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "mod",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1391,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1388,
+ "name": "a",
+ "nodeType": "VariableDeclaration",
+ "scope": 1406,
+ "src": "1741:9:6",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 1387,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1741:7:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1390,
+ "name": "b",
+ "nodeType": "VariableDeclaration",
+ "scope": 1406,
+ "src": "1752:9:6",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 1389,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1752:7:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "1740:22:6"
+ },
+ "returnParameters": {
+ "id": 1394,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1393,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 1406,
+ "src": "1786:7:6",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 1392,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1786:7:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "1785:9:6"
+ },
+ "scope": 1407,
+ "src": "1728:121:6",
+ "stateMutability": "pure",
+ "superFunction": null,
+ "visibility": "internal"
+ }
+ ],
+ "scope": 1408,
+ "src": "125:1726:6"
+ }
+ ],
+ "src": "0:1852:6"
+ },
+ "legacyAST": {
+ "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol",
+ "exportedSymbols": {
+ "SafeMath": [
+ 1407
+ ]
+ },
+ "id": 1408,
+ "nodeType": "SourceUnit",
+ "nodes": [
+ {
+ "id": 1281,
+ "literals": [
+ "solidity",
+ "^",
+ "0.5",
+ ".0"
+ ],
+ "nodeType": "PragmaDirective",
+ "src": "0:23:6"
+ },
+ {
+ "baseContracts": [],
+ "contractDependencies": [],
+ "contractKind": "library",
+ "documentation": "@title SafeMath\n@dev Unsigned math operations with safety checks that revert on error",
+ "fullyImplemented": true,
+ "id": 1407,
+ "linearizedBaseContracts": [
+ 1407
+ ],
+ "name": "SafeMath",
+ "nodeType": "ContractDefinition",
+ "nodes": [
+ {
+ "body": {
+ "id": 1313,
+ "nodeType": "Block",
+ "src": "296:354:6",
+ "statements": [
+ {
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 1292,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 1290,
+ "name": "a",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1283,
+ "src": "527:1:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 1291,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "532:1:6",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "src": "527:6:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": null,
+ "id": 1296,
+ "nodeType": "IfStatement",
+ "src": "523:45:6",
+ "trueBody": {
+ "id": 1295,
+ "nodeType": "Block",
+ "src": "535:33:6",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 1293,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "556:1:6",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "functionReturnParameters": 1289,
+ "id": 1294,
+ "nodeType": "Return",
+ "src": "549:8:6"
+ }
+ ]
+ }
+ },
+ {
+ "assignments": [
+ 1298
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 1298,
+ "name": "c",
+ "nodeType": "VariableDeclaration",
+ "scope": 1313,
+ "src": "578:9:6",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 1297,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "578:7:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 1302,
+ "initialValue": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 1301,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 1299,
+ "name": "a",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1283,
+ "src": "590:1:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "*",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 1300,
+ "name": "b",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1285,
+ "src": "594:1:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "590:5:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "578:17:6"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 1308,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 1306,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 1304,
+ "name": "c",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1298,
+ "src": "613:1:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "/",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 1305,
+ "name": "a",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1283,
+ "src": "617:1:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "613:5:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 1307,
+ "name": "b",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1285,
+ "src": "622:1:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "613:10:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ ],
+ "id": 1303,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 1534,
+ 1535
+ ],
+ "referencedDeclaration": 1534,
+ "src": "605:7:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
+ "typeString": "function (bool) pure"
+ }
+ },
+ "id": 1309,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "605:19:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1310,
+ "nodeType": "ExpressionStatement",
+ "src": "605:19:6"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1311,
+ "name": "c",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1298,
+ "src": "642:1:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "functionReturnParameters": 1289,
+ "id": 1312,
+ "nodeType": "Return",
+ "src": "635:8:6"
+ }
+ ]
+ },
+ "documentation": "@dev Multiplies two unsigned integers, reverts on overflow.",
+ "id": 1314,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "mul",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1286,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1283,
+ "name": "a",
+ "nodeType": "VariableDeclaration",
+ "scope": 1314,
+ "src": "242:9:6",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 1282,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "242:7:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1285,
+ "name": "b",
+ "nodeType": "VariableDeclaration",
+ "scope": 1314,
+ "src": "253:9:6",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 1284,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "253:7:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "241:22:6"
+ },
+ "returnParameters": {
+ "id": 1289,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1288,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 1314,
+ "src": "287:7:6",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 1287,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "287:7:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "286:9:6"
+ },
+ "scope": 1407,
+ "src": "229:421:6",
+ "stateMutability": "pure",
+ "superFunction": null,
+ "visibility": "internal"
+ },
+ {
+ "body": {
+ "id": 1337,
+ "nodeType": "Block",
+ "src": "845:229:6",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 1326,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 1324,
+ "name": "b",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1318,
+ "src": "929:1:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": ">",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 1325,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "933:1:6",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "src": "929:5:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ ],
+ "id": 1323,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 1534,
+ 1535
+ ],
+ "referencedDeclaration": 1534,
+ "src": "921:7:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
+ "typeString": "function (bool) pure"
+ }
+ },
+ "id": 1327,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "921:14:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1328,
+ "nodeType": "ExpressionStatement",
+ "src": "921:14:6"
+ },
+ {
+ "assignments": [
+ 1330
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 1330,
+ "name": "c",
+ "nodeType": "VariableDeclaration",
+ "scope": 1337,
+ "src": "945:9:6",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 1329,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "945:7:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 1334,
+ "initialValue": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 1333,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 1331,
+ "name": "a",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1316,
+ "src": "957:1:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "/",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 1332,
+ "name": "b",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1318,
+ "src": "961:1:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "957:5:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "945:17:6"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1335,
+ "name": "c",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1330,
+ "src": "1066:1:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "functionReturnParameters": 1322,
+ "id": 1336,
+ "nodeType": "Return",
+ "src": "1059:8:6"
+ }
+ ]
+ },
+ "documentation": "@dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero.",
+ "id": 1338,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "div",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1319,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1316,
+ "name": "a",
+ "nodeType": "VariableDeclaration",
+ "scope": 1338,
+ "src": "791:9:6",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 1315,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "791:7:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1318,
+ "name": "b",
+ "nodeType": "VariableDeclaration",
+ "scope": 1338,
+ "src": "802:9:6",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 1317,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "802:7:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "790:22:6"
+ },
+ "returnParameters": {
+ "id": 1322,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1321,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 1338,
+ "src": "836:7:6",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 1320,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "836:7:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "835:9:6"
+ },
+ "scope": 1407,
+ "src": "778:296:6",
+ "stateMutability": "pure",
+ "superFunction": null,
+ "visibility": "internal"
+ },
+ {
+ "body": {
+ "id": 1361,
+ "nodeType": "Block",
+ "src": "1272:78:6",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 1350,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 1348,
+ "name": "b",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1342,
+ "src": "1290:1:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "<=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 1349,
+ "name": "a",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1340,
+ "src": "1295:1:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "1290:6:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ ],
+ "id": 1347,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 1534,
+ 1535
+ ],
+ "referencedDeclaration": 1534,
+ "src": "1282:7:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
+ "typeString": "function (bool) pure"
+ }
+ },
+ "id": 1351,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1282:15:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1352,
+ "nodeType": "ExpressionStatement",
+ "src": "1282:15:6"
+ },
+ {
+ "assignments": [
+ 1354
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 1354,
+ "name": "c",
+ "nodeType": "VariableDeclaration",
+ "scope": 1361,
+ "src": "1307:9:6",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 1353,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1307:7:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 1358,
+ "initialValue": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 1357,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 1355,
+ "name": "a",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1340,
+ "src": "1319:1:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "-",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 1356,
+ "name": "b",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1342,
+ "src": "1323:1:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "1319:5:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "1307:17:6"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1359,
+ "name": "c",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1354,
+ "src": "1342:1:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "functionReturnParameters": 1346,
+ "id": 1360,
+ "nodeType": "Return",
+ "src": "1335:8:6"
+ }
+ ]
+ },
+ "documentation": "@dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend).",
+ "id": 1362,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "sub",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1343,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1340,
+ "name": "a",
+ "nodeType": "VariableDeclaration",
+ "scope": 1362,
+ "src": "1218:9:6",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 1339,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1218:7:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1342,
+ "name": "b",
+ "nodeType": "VariableDeclaration",
+ "scope": 1362,
+ "src": "1229:9:6",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 1341,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1229:7:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "1217:22:6"
+ },
+ "returnParameters": {
+ "id": 1346,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1345,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 1362,
+ "src": "1263:7:6",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 1344,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1263:7:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "1262:9:6"
+ },
+ "scope": 1407,
+ "src": "1205:145:6",
+ "stateMutability": "pure",
+ "superFunction": null,
+ "visibility": "internal"
+ },
+ {
+ "body": {
+ "id": 1385,
+ "nodeType": "Block",
+ "src": "1498:78:6",
+ "statements": [
+ {
+ "assignments": [
+ 1372
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 1372,
+ "name": "c",
+ "nodeType": "VariableDeclaration",
+ "scope": 1385,
+ "src": "1508:9:6",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 1371,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1508:7:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 1376,
+ "initialValue": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 1375,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 1373,
+ "name": "a",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1364,
+ "src": "1520:1:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "+",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 1374,
+ "name": "b",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1366,
+ "src": "1524:1:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "1520:5:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "1508:17:6"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 1380,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 1378,
+ "name": "c",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1372,
+ "src": "1543:1:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": ">=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 1379,
+ "name": "a",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1364,
+ "src": "1548:1:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "1543:6:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ ],
+ "id": 1377,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 1534,
+ 1535
+ ],
+ "referencedDeclaration": 1534,
+ "src": "1535:7:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
+ "typeString": "function (bool) pure"
+ }
+ },
+ "id": 1381,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1535:15:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1382,
+ "nodeType": "ExpressionStatement",
+ "src": "1535:15:6"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1383,
+ "name": "c",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1372,
+ "src": "1568:1:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "functionReturnParameters": 1370,
+ "id": 1384,
+ "nodeType": "Return",
+ "src": "1561:8:6"
+ }
+ ]
+ },
+ "documentation": "@dev Adds two unsigned integers, reverts on overflow.",
+ "id": 1386,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "add",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1367,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1364,
+ "name": "a",
+ "nodeType": "VariableDeclaration",
+ "scope": 1386,
+ "src": "1444:9:6",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 1363,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1444:7:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1366,
+ "name": "b",
+ "nodeType": "VariableDeclaration",
+ "scope": 1386,
+ "src": "1455:9:6",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 1365,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1455:7:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "1443:22:6"
+ },
+ "returnParameters": {
+ "id": 1370,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1369,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 1386,
+ "src": "1489:7:6",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 1368,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1489:7:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "1488:9:6"
+ },
+ "scope": 1407,
+ "src": "1431:145:6",
+ "stateMutability": "pure",
+ "superFunction": null,
+ "visibility": "internal"
+ },
+ {
+ "body": {
+ "id": 1405,
+ "nodeType": "Block",
+ "src": "1795:54:6",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 1398,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 1396,
+ "name": "b",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1390,
+ "src": "1813:1:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "!=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 1397,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "1818:1:6",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "src": "1813:6:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ ],
+ "id": 1395,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 1534,
+ 1535
+ ],
+ "referencedDeclaration": 1534,
+ "src": "1805:7:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
+ "typeString": "function (bool) pure"
+ }
+ },
+ "id": 1399,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1805:15:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1400,
+ "nodeType": "ExpressionStatement",
+ "src": "1805:15:6"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 1403,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 1401,
+ "name": "a",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1388,
+ "src": "1837:1:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "%",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 1402,
+ "name": "b",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1390,
+ "src": "1841:1:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "1837:5:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "functionReturnParameters": 1394,
+ "id": 1404,
+ "nodeType": "Return",
+ "src": "1830:12:6"
+ }
+ ]
+ },
+ "documentation": "@dev Divides two unsigned integers and returns the remainder (unsigned integer modulo),\nreverts when dividing by zero.",
+ "id": 1406,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "mod",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1391,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1388,
+ "name": "a",
+ "nodeType": "VariableDeclaration",
+ "scope": 1406,
+ "src": "1741:9:6",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 1387,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1741:7:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1390,
+ "name": "b",
+ "nodeType": "VariableDeclaration",
+ "scope": 1406,
+ "src": "1752:9:6",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 1389,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1752:7:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "1740:22:6"
+ },
+ "returnParameters": {
+ "id": 1394,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1393,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 1406,
+ "src": "1786:7:6",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 1392,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1786:7:6",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "1785:9:6"
+ },
+ "scope": 1407,
+ "src": "1728:121:6",
+ "stateMutability": "pure",
+ "superFunction": null,
+ "visibility": "internal"
+ }
+ ],
+ "scope": 1408,
+ "src": "125:1726:6"
+ }
+ ],
+ "src": "0:1852:6"
+ },
+ "compiler": {
+ "name": "solc",
+ "version": "0.5.11+commit.c082d0b4.Emscripten.clang"
+ },
+ "networks": {},
+ "schemaVersion": "3.0.11",
+ "updatedAt": "2019-09-29T03:09:06.448Z",
+ "devdoc": {
+ "details": "Unsigned math operations with safety checks that revert on error",
+ "methods": {},
+ "title": "SafeMath"
+ },
+ "userdoc": {
+ "methods": {}
+ }
+} \ No newline at end of file